From dev-pipeline
End-to-end autonomous development: goal → plan → TDD → implement → validate → PR → address feedback → wait for merge → close tracking. Human approves plan and merge only. Example: /dev implement rate limiting
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-pipeline:devThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
One skill to go from goal to merged PR. The human intervenes at two gates:
One skill to go from goal to merged PR. The human intervenes at two gates:
Everything else runs autonomously: test writing, implementation, validation, PR creation, CI monitoring, addressing review comments.
Commit early and often. Push after every commit.
style: fix lint/formatting)/dev implement rate limiting for the admin API/dev https://trello.com/c/abc123If no argument, ask: "What should I build? (goal or Trello card URL)"
Run pwd. Must contain .claude/worktrees/.
If not: STOP. "Not in a worktree. Run claude --worktree first, then /dev again."
If .env doesn't exist:
cp ../../.env .envcp .env.example .envTrello card (URL contains trello.com/c/):
~/bin/trello card <ID>~/bin/trello move <ID> <LIST_ID> (look up via ~/bin/trello lists <BOARD_ID>)Plain text: use as-is.
dev/context/ for learnings, decisions, gotchasWrite dev/OBJECTIVE.md:
# Objective
<One-sentence goal>
## Description
<Context informed by codebase research>
## Approach
- <Step 1: what to change and why>
- <Step 2: ...>
- <Step 3: ...>
## Test Strategy
- Unit tests: <what to test, which files>
- E2E tests: <whether needed, which scenarios>
## Acceptance Criteria
- [ ] Failing unit tests written
- [ ] Implementation makes all tests pass
- [ ] dev_checks passes
- [ ] <domain-specific criteria>
## Tracking
- Trello: <card URL or "none">
- Branch: <branch>
- PR: <filled later>
Present the plan to the user. STOP and wait for approval.
Do not proceed until the user confirms. Adjust the plan if they have feedback.
Commit the objective and push immediately — get the draft PR up before writing any code:
git add dev/OBJECTIVE.md
git commit -m "chore: set objective to <short-handle>"
git push -u origin $(git rev-parse --abbrev-ref HEAD)
gh pr create --draft --title "<type>: <title>" --body "$(cat <<'EOF'
## Objective
<objective statement>
## Approach
<approach from OBJECTIVE.md>
## Acceptance Criteria
<criteria>
EOF
)"
Update dev/OBJECTIVE.md Tracking section with the PR URL. If Trello card is linked, comment the PR URL on the card.
Write unit tests that define the expected behavior:
Run: uv run pytest <test_files> -v
Confirm tests fail because the feature doesn't exist, not due to import errors or test bugs. Fix test infrastructure issues until they fail cleanly.
git add <test_files>
git commit -m "test: add failing tests for <feature>"
git push
Implement the feature/fix according to the plan.
Use tests as the feedback loop: after each significant change, run the relevant tests to check progress. Don't wait until "done" to test — test continuously.
uv run pytest <test_files> -v
Commit at each milestone: when a test starts passing, when a module is complete, when a logical chunk of work is done. Push every commit.
Keep iterating until all new tests pass AND existing tests still pass:
uv run pytest tests/unit_tests/ -v
Commit and push when all tests are green.
Invoke /cleanup on the changed files to scan for dead code, complexity, duplication, and other quality issues. Fix safe issues, report the rest.
Commit and push any fixes immediately (e.g., style: cleanup pass).
Invoke the superpowers:requesting-code-review skill to self-review the implementation against the plan and acceptance criteria. Address any issues found before proceeding.
Execute the project's QC suite — ./scripts/dev_checks.sh or equivalent (formatting, linting, type checking, tests, coverage). Check the project's CLAUDE.md or build docs for the right command if dev_checks.sh doesn't exist.
style: fix lint/formatting), re-runAlways do a basic smoke test of the actual user workflow, even when the test strategy says no formal e2e tests are needed. Unit tests verify logic; smoke tests verify the feature actually works end-to-end. Run the feature the way a user would and confirm it doesn't crash.
This step catches integration issues that unit tests miss (e.g., import-time side effects, config loading order, missing files).
If the test strategy calls for formal e2e tests:
docker compose ps)Add a changelog fragment to changelog.d/ following the project's fragment format (see changelog.d/README.md). Name it after the branch or feature handle. Include the PR number.
dev/OBJECTIVE.mddev/NOTES.mdgit add -A
git commit -m "chore: <objective-handle> is ready"
git push
gh pr ready
This stage runs autonomously until the PR is merged.
After pushing, set up a single background monitor that polls for all three blocking conditions:
gh pr checks <number>gh pr view <number> --json mergeable --jq .mergeablePREV_COMMENT_COUNT=$(gh pr view <number> --json comments --jq '.comments | length')
# Poll every 60-120 seconds in background, report on any change
When notified, handle whichever condition triggered:
If checks fail:
gh run view <run_id> --log-failedIf mergeable is CONFLICTING:
git fetch origin main && git merge origin/mainFetch and present all comments:
gh pr view <number> --json reviews --jq '.reviews[] | select(.state != "APPROVED") | "\(.author.login) (\(.state)): \(.body)"'
gh api repos/<owner>/<repo>/pulls/<number>/comments --jq '.[] | "\(.path):\(.line // .original_line) — \(.user.login): \(.body)"'
For each comment:
After addressing comments:
fix: address review — <summary>)When reviewDecision is APPROVED and all checks pass:
Tell the user: "PR is approved and all checks pass. Ready to merge when you are."
Do NOT merge. The human merges.
Monitor PR state:
gh pr view <number> --json state --jq .state
When state is MERGED, proceed to Stage 8.
If a Trello card was linked:
~/bin/trello move <CARD_ID> <DONE_LIST_ID>Ticket complete:
PR: <URL> (merged)
CHANGELOG: <entry>
Trello: <moved to Done / not linked>
Done.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub luthienresearch/internal-utils --plugin dev-pipeline