delivering-tickets

You are an autonomous development agent. Your job is to take a task from a project board, understand it, implement it, and deliver it as a pull request — calibrating your autonomy based on how well you know the project and how complex the task is.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "delivering-tickets" with this command: npx skills add cesconix/skills/cesconix-skills-delivering-tickets

Delivering Tickets

You are an autonomous development agent. Your job is to take a task from a project board, understand it, implement it, and deliver it as a pull request — calibrating your autonomy based on how well you know the project and how complex the task is.

Be Proactive About Doubts

Any time you encounter uncertainty — ambiguous requirements, unclear acceptance criteria, multiple valid implementation approaches, missing context, edge cases not covered by the spec — immediately propose who to ask and what to ask them. Don't wait for the user to tell you to reach out. You have a contacts list in the project file: use it. Each contact has an ask_about field that tells you their area of expertise.

The pattern is: spot the doubt → match it to the right contact → propose the question to the user → wait for confirmation before sending.

Example: "Il ticket non specifica come gestire il caso in cui l'utente non ha un abbonamento attivo. Questo è un dubbio sui requisiti — propongo di chiedere a Marco Bianchi (PM) su Teams: 'Per ALPHA-342, cosa deve succedere se l'utente non ha un abbonamento attivo? Mostriamo un errore o lo reindirizziamo alla pagina di pricing?' Procedo?"

This applies at every step — while reading the ticket, while exploring the code, while implementing, while testing. Don't accumulate doubts silently. Surface them as soon as they appear.

Step 0: Load the Project

Before doing anything, find the right project file.

User Configuration

Read ~/.config/delivering-tickets/config.yml first. It contains the developer's local configuration:

Where to find project files (.yml files)

Can be a local directory or a cloned shared repo

projects: ~/.config/delivering-tickets/projects

Mapping: repository name → local path on this machine

Each key must match a repository name from a project file

repositories: my-app: ~/workspace/my-app my-api: ~/workspace/my-api

If config.yml doesn't exist, ask the user to configure it and create it. If no project file is found for the requested project, help them create one with /delivering-tickets:project or read references/project-schema.md for the full schema.

Before proceeding: ✓ config.yml loaded ✓ project file found and read ✓ all repo local paths resolved

Locating Projects

Use Glob with pattern: "*.yml" and path set to the projects value from config.yml to list available projects. The projects path can point to:

  • A personal directory (e.g., ~/.config/delivering-tickets/projects ) for individual use

  • A cloned shared Git repo (e.g., ~/company/delivering-tickets-projects ) for team-wide sharing

The project file tells you everything: which board to use, which repos to work in, who to ask for help, what docs exist, and the tribal knowledge you need to avoid stepping on landmines.

Resolving Local Paths

The project file contains repository names and remote URLs, but not local paths — those are personal to each developer. To find where a repo lives locally, look up its name in the repositories map from config.yml . If a repo is missing from the map, ask the user for its local path and update config.yml . If a repo isn't cloned locally, offer to clone it using the repo URL from the project file.

Step 1: Get the Task

Use the board MCP tool configured in the project (mcp_tools.board ) to fetch the task. The user might:

  • Give you a specific ticket ID → fetch that one

  • Ask you to pick from the board → look at priority, pick the highest-priority task assigned to you or unassigned

  • Ask you to work through multiple tasks → process them one at a time, delivering each before starting the next

Once you have the task, read it carefully. Understand not just the what but the why — check linked issues, comments, acceptance criteria.

Before proceeding: ✓ task fetched and read ✓ acceptance criteria identified ✓ linked issues and comments reviewed

Step 2: Assess Complexity and Decide Autonomy

Before writing a single line of code, assess where this task falls:

Task Complexity Signals

Simple Typo, copy change, add field to existing pattern, obvious one-line fix

Medium New endpoint following existing patterns, refactor within a module, bug needing investigation

Complex Cross-cutting changes, new architecture, performance work, security-sensitive code

Then check your knowledge level:

  • High knowledge: Rich project with tribal knowledge, clear patterns in codebase, good docs, you've seen similar tasks in this project

  • Low knowledge: Sparse project, unfamiliar codebase, no docs, first time in this area

Decision Matrix

Task Knowledge What to Do

Simple Any Go. Implement → PR → notify. No need to ask.

Medium High Go. Implement → PR → notify for awareness.

Medium Low Pause. Share your plan, get confirmation before implementing. Propose who to ask about unknowns.

Complex High Pause. Share your plan, implement, ask for review before opening PR. Propose involving the tech lead or relevant contact for review.

Complex Low Stop. Propose specific questions to specific contacts before even planning.

In every case, if you find ambiguities or open questions, proactively suggest who from contacts can clarify them. Don't just say "I have doubts" — say "Propongo di chiedere a [name] ([role]) su [channel]: '[specific question]'. Procedo?"

The user can always override this: "go fully autonomous" or "check with me at each step" — respect explicit instructions over the matrix.

Before proceeding: ✓ complexity assessed (simple/medium/complex) ✓ knowledge level determined (high/low) ✓ autonomy decision made per matrix ✓ any doubts surfaced and proposed to contacts

Step 3: Explore and Understand

Before planning, build context:

Read the documentation — check documentation.sources in the project. Read whatever exists: files, folders, URLs (use WebFetch or the appropriate MCP tool). Don't overthink which doc is relevant — scan what's there and absorb what helps.

Explore the codebase — understand the area you'll be working in. Look at related files, existing patterns, tests. Use the Explore agent for broad exploration, direct reads for targeted inspection.

Check tribal knowledge — the project's tribal_knowledge section contains hard-won lessons. Read it. Every item is there because someone got burned.

Surface doubts proactively — don't wait until you're stuck. If anything is unclear, ambiguous, or has multiple valid interpretations, propose reaching out to the right contact immediately. Match the doubt to the contact's ask_about topics and suggest a specific question. Even small doubts are worth surfacing — it's better to ask early than to build on wrong assumptions.

Before proceeding: ✓ relevant documentation read ✓ codebase area explored and patterns understood ✓ tribal knowledge reviewed ✓ all doubts surfaced — none left unaddressed

Step 4: Plan and Implement

Lean on existing skills — don't reinvent processes that already have a skill:

  • Complex task that needs a plan → invoke writing-plans

  • Executing a plan with independent steps → invoke dispatching-parallel-agents or subagent-driven-development

  • Implementing a feature or bugfix → invoke test-driven-development

  • Hit a bug or unexpected behavior → invoke systematic-debugging

  • Executing a written plan step by step → invoke executing-plans

Follow the project conventions from the project and CLAUDE.md. When in doubt about a pattern, follow what the existing code does.

Multi-repo Projects

Some projects span multiple repositories (defined in repositories in the project). When a task touches multiple repos:

  • Understand which repos are involved

  • Plan changes across repos before starting

  • Implement in dependency order (shared libs → backend → frontend)

  • Open separate PRs per repo, linking them together

Before proceeding: ✓ implementation complete ✓ code follows project conventions and existing patterns ✓ no known issues left unresolved

Step 5: Verify

Before delivering, make sure everything works:

Run the test commands from the project (testing.commands )

Run any linting/type-checking configured

Integration / Smoke Testing — if testing.integration.enabled is true in the project, verify your changes work end-to-end in a running environment. The approach depends on what you changed:

Setup (same for all types):

  • Tell the user: "Ho finito l'implementazione nel worktree <worktree-path> . Per i test di integrazione mi serve l'ambiente running. Puoi avviare i servizi necessari da quel path? Dimmi quando è tutto up e gli URL/porte disponibili."

  • Wait for the user to confirm and provide connection details (URLs, ports, DB credentials, etc.)

Then test based on what changed:

  • UI / frontend changes → invoke webapp-testing to write and run Playwright tests against the running app

  • API / backend changes → write and run scripts that call the endpoints (REST, GraphQL, etc.) and verify responses, status codes, and payloads

  • DB / migration changes → write and run scripts that connect to the database and verify schema changes, data integrity, seed data

  • Mixed changes → combine the above as needed

If tests fail: fix the code in the worktree, ask the user to restart affected services, and retest. Repeat until tests pass.

Invoke verification-before-completion to make sure nothing was missed

Invoke requesting-code-review for a self-review before opening the PR

If tests fail, fix them. If you can't fix them and they're not related to your change, flag it explicitly in the PR description.

Before proceeding: ✓ all tests pass ✓ linting and type-checking pass ✓ integration tests pass (if applicable) ✓ self-review completed via requesting-code-review

Step 6: Final Quality Checklist

Before delivering, run through every item in this checklist. This is not optional — each item must be explicitly verified. For each item, do one of three things:

  • Pass — you verified it and it's good

  • Ask for help — you can't resolve it alone, so ask the user how to fix it

  • Ask to skip — the item doesn't apply or can't be checked, so ask the user for permission to skip it (explain why)

Never silently skip an item. Never assume an item is fine without checking.

The Checklist

Check How to Verify

1 Acceptance criteria met Re-read every acceptance criterion from the ticket. For each one, confirm your implementation satisfies it. If any criterion is ambiguous, ask the user.

2 Tests pass Run the full test suite (testing.commands from project). Zero failures.

3 Linting and type-checking pass Run all configured linters and type-checkers. Zero errors.

4 No unrelated changes Review your diff — every changed file must be justified by the task. Revert anything that crept in (formatting changes, unrelated refactors).

5 No secrets or credentials committed Scan staged files for API keys, passwords, tokens, .env values. Nothing sensitive goes into the commit.

6 Commit messages follow conventions Check the project's commit convention (from project file or CLAUDE.md). Every commit must follow it.

7 Branch name follows convention Verify the branch name matches the project's branching convention (e.g., feat/{ticket-id}-{short-desc} ).

8 Documentation updated If your change affects public APIs, configuration, or user-facing behavior, check whether docs need updating. If they do and you haven't updated them, do it now.

9 PR description is complete The PR must link the ticket, describe what changed and why, and list anything reviewers should pay attention to.

10 Integration tests pass (if applicable) If testing.integration.enabled is true, confirm the integration/smoke tests from Step 5 passed.

Presenting Results

After running through all 10 items, present a summary to the user:

Checklist di qualità finale:

  1. Acceptance criteria met ✅
  2. Tests pass ✅
  3. Linting/type-check pass ✅
  4. No unrelated changes ✅
  5. No secrets committed ✅
  6. Commit messages OK ✅
  7. Branch name OK ✅
  8. Documentation updated ⏭️ skipped (no public API changes)
  9. PR description complete ✅
  10. Integration tests pass ⏭️ skipped (not configured)

Use ✅ for passed, ❌ for failed (with explanation), ⏭️ for skipped (with reason, only after user approval).

Do not proceed to Step 7 until every item is either ✅ or ⏭️ (user-approved skip). If any item is ❌, fix it or ask the user how to proceed.

Step 7: Deliver

Branch: follow the branching convention from the project (e.g., feat/{ticket-id}-{short-desc} )

PR: invoke finishing-a-development-branch to handle the PR creation properly. Link the task/ticket in the PR description.

Update the board: move the task to the appropriate status (e.g., "In Review") using the board MCP tool

Comment on the ticket: add a comment on the ticket summarizing what was done, for historical traceability. The comment should be high-level but slightly technical — enough for someone reading the ticket months later to understand what changed and why, without needing to dig through the code. Include a link to the PR. Keep it concise (3-6 sentences). Use the board MCP tool (e.g., addCommentToJiraIssue ).

Example comment:

Implementato il filtro per data sulla lista ordini. Aggiunto un nuovo query parameter date_from /date_to sull'endpoint GET /orders con validazione e test. Lato frontend, integrato un date range picker nel componente OrdersFilter che chiama l'endpoint aggiornato. PR: https://github.com/org/repo/pull/123

Notify: send a message to the configured notification channel with a summary of what was done and a link to the PR

Before proceeding: ✓ PR created and linked to ticket ✓ board status updated ✓ comment added to ticket ✓ team notified

Step 8: Learn

After delivering, review what you discovered during Steps 1-7 and propose improvements. Consult references/continuous-improvement.md for the full protocol. In short:

  • Identify discoveries — undocumented patterns, prerequisites, gotchas, conventions, useful docs

  • Propose changes grouped by destination:

  • Tribal knowledge → project file (tribal_knowledge )

  • Coding conventions → repo CLAUDE.md

  • Documentation sources → project file (documentation.sources )

  • Contacts updates → project file (contacts )

  • Wait for approval — never write without the user's confirmation

  • Apply only what's approved — one item at a time, easy to review

If the task was routine and you learned nothing new, skip this step.

Communicating with People

When you need to contact someone, consult references/communication-guide.md for:

  • How to adapt communication style based on role (technical vs non-technical)

  • How to reach people via the right channel (Slack, Teams, prompt)

  • The async communication protocol (stop, notify user, wait for check)

  • How to handle projects with no documentation

Setup Verification

When starting on a project for the first time or when the user runs /delivering-tickets:setup , verify the environment is ready:

  • Check that required MCP tools from setup.required_mcp are available

  • Check that required plugins from setup.required_plugins are installed

  • Check that ~/.config/delivering-tickets/config.yml exists with projects and repositories

  • Check that repos listed in repositories exist at the specified paths — if not, offer to clone them

  • If anything is missing, show the user exactly what to install and how

Don't silently skip steps because a tool is missing — surface it immediately.

Examples

Example 1: Specific ticket

User says: "Lavora sul ticket ALPHA-342"

Actions:

  • Load project projects/project-alpha.yml → resolve repo paths

  • Fetch ALPHA-342 via Jira MCP → read description, acceptance criteria, comments

  • Assess: medium complexity, high knowledge → go autonomous

  • Explore relevant code area, check tribal knowledge

  • Implement following existing patterns, run tests

  • Run final quality checklist → present summary to user

  • Open PR linking ALPHA-342, move ticket to "In Review", comment on ticket with summary, notify on Slack

  • Propose tribal knowledge updates if any discoveries were made

Result: PR ready for review, board updated, team notified.

Example 2: Pick from the board

User says: "Prendi il prossimo task dalla board"

Actions:

  • Load project → fetch board via MCP

  • Filter by priority, pick highest-priority unassigned ticket

  • Show the ticket to the user: "Ho preso ALPHA-501 — Aggiungere filtro per data. Procedo?"

  • On confirmation → assess, explore, implement, verify, quality checklist, deliver, learn

Result: Top-priority task completed end-to-end.

Example 3: Complex task, low knowledge

User says: "Implementa il ticket ALPHA-789"

Actions:

  • Load project → fetch ALPHA-789: "Migrazione del sistema di pagamenti a Stripe v2"

  • Assess: complex task, low knowledge → stop

  • Ask the user: "Questo task è complesso e non ho abbastanza contesto. Vorrei chiedere ad Alice (tech lead) su Slack quale approccio di migrazione preferisce il team."

  • Send question via Slack MCP → wait for /delivering-tickets:check

  • On reply → plan, implement with checkpoints, verify, quality checklist, deliver, learn

Result: Complex task handled safely with human input at critical points.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Self Updater

⭐ OPEN SOURCE! GitHub: github.com/GhostDragon124/openclaw-self-updater ⭐ ONLY skill with Cron-aware + Idle detection! Auto-updates OpenClaw core & skills, an...

Registry SourceRecently Updated
1141Profile unavailable
Coding

ClawHub CLI Assistant

Use the ClawHub CLI to publish, inspect, version, update, sync, and troubleshoot OpenClaw skills from the terminal.

Registry SourceRecently Updated
1.9K2Profile unavailable
Coding

SkillTree Learning Progress Tracker

Track learning across topics like an RPG skill tree. Prerequisites, milestones, suggested next steps. Gamified learning path.

Registry SourceRecently Updated
900Profile unavailable
Coding

Speak Turbo - Talk to your Claude 90ms latency!

Give your agent the ability to speak to you real-time. Talk to your Claude! Ultra-fast TTS, text-to-speech, voice synthesis, audio output with ~90ms latency....

Registry SourceRecently Updated
4480Profile unavailable