Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run the full implement → test → CI → review → PR pipeline for a task. Coordinates implementer, test-writer, ci-validator, and code-reviewer agents.
.claude/skills/tetherto-orchestrate/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 104% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 133% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 124% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 124% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 174% | 0% |
Run the complete agent pipeline for a task: branch setup, implement, test, CI validate, review, push, and create PR.
/orchestrate <asana-task-id-or-url>
Accepts either:
1213560067347874https://app.asana.com/0/1234567890/1213560067347874git checkout main && git pull origin mainfeat/<ticket>-<slug>QVAC-123)feat/QVAC-123-add-rag-support-for-lancedbfeat/<task-title-slug>git checkout -b <branch-name> Task: <task-title> Branch: <branch-name>
Before any implementation, create a plan for the user to approve:
Launch the implementer agent with the Asana task ID and the approved plan.
Implement Asana task <task-id>. Follow this approved plan:
<paste the approved plan here>
Write code within scope of the plan, verify build/tests pass, and commit working changes.Wait for completion. If the implementer reports failure (e.g., ambiguous requirements, build failures after 3 retries), stop the pipeline and report to the user.
After implementation, analyze the changed files and the Asana task to decide what's needed next.
Run git diff --name-only main...HEAD and apply these rules:
.agent/knowledge/ci-validation.md, CI is needed. Use the short name from that table. If multiple addon packages changed, run CI for each.packages/qvac-sdk/**, packages/rag/**, packages/cli/**) — SDK CI runs automatically via pr-checks-sdk-pod on PR creation. No manual trigger needed.If CI is needed, inform the user which packages will be validated and why.
Determine if new tests are needed by checking:
| Signal | Tests needed? | |---|---| | New public API / exported functions added | Yes | | New feature with user-facing behavior | Yes | | Bug fix (regression test) | Yes | | Asana task acceptance criteria mention testable behavior | Yes | | Refactoring with no behavior change | No | | Documentation / config / CI workflow only | No | | Changes already have corresponding test updates from implementer | No — skip |
Read the Asana task acceptance criteria. If they describe specific behaviors or scenarios, those should become tests.
If Phase 1.5 determined tests are needed, launch the test-writer agent:
Write automated tests for the changes on the current branch. Task ID: <task-id>. Focus on new public APIs, new behavior, and edge cases. Match existing test patterns.Wait for completion. If the test-writer discovers code bugs, launch the implementer again with the bug details before proceeding.
If tests are not needed, skip to Phase 2.
If Phase 1.5 determined CI is needed:
git push -u origin HEADIf CI is not needed, skip to Phase 3.
Launch the code-reviewer agent:
Review all changes on the current branch against main. Task ID: <task-id>. Check requirements match, bugs, conventions, security, scope, and test coverage. Fix issues directly and commit fixes.Wait for completion. Collect the review summary.
If the reviewer committed any fixes AND Phase 1.5 determined CI was needed:
If no CI needed or no reviewer fixes, proceed to reporting.
bash git push -u origin HEAD
packages/qvac-sdk/ or other TS packages → SDK PRgh pr create:<ticket> <prefix>[tags]: <task-title-summary> (following commit format from CLAUDE.md)/qv-addon-pr-create/qv-sdk-pr-createmainbash gh pr create --base main --title "QVAC-123 feat: add RAG support" --body "..."
Produce a final summary:
Pipeline complete for task <task-id>:
Branch: <branch-name>
PR: <pr-url>
Implementation:
- [summary from implementer]
- Files changed: [list]
Tests:
- [added/skipped, with reason]
- Tests added: [count and brief descriptions]
- Code bugs found by tests: [count or none]
CI Validation:
- [pass/fail/skipped]
- Packages tested: [list or "n/a — no native addon changes"]
- Platforms: [list]
Review:
- Issues found and fixed: [count]
- Issues flagged but not fixed: [count, with details]
Status: [ready for human review / needs attention]Update the Asana task:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→fail | 6,583 | 2,366 | -64% | 1 | 1 | 0% | 1,011 | 2,299 | +127% | 0 | 0 | — |
case-01 | fail→fail | 7,746 | 5,895 | -24% | 1 | 1 | 0% | 1,287 | 2,559 | +99% | 0 | 0 | — |
case-02 | fail→fail | 31,977 | 5,494 | -83% | 1 | 1 | 0% | 6,325 | 2,471 | -61% | 0 | 0 | — |
case-03 | fail→fail | 8,335 | 4,465 | -46% | 1 | 1 | 0% | 1,369 | 2,394 | +75% | 0 | 0 | — |
case-04 | pass→fail | 6,196 | 2,503 | -60% | 1 | 1 | 0% | 1,088 | 2,288 | +110% | 0 | 0 | — |
case-16 | pass→pass | 6,651 | 1,666 | -75% | 1 | 1 | 0% | 991 | 2,295 | +132% | 0 | 0 | — |
case-06 | fail→fail | 8,662 | 5,413 | -38% | 1 | 1 | 0% | 1,058 | 2,357 | +123% | 0 | 0 | — |
case-07 | fail→pass | 6,764 | 3,644 | -46% | 1 | 1 | 0% | 1,376 | 2,808 | +104% | 0 | 0 | — |
case-08 | fail→pass | 5,654 | 3,296 | -42% | 1 | 1 | 0% | 1,132 | 2,633 | +133% | 0 | 0 | — |
case-09 | fail→fail | 7,833 | 2,086 | -73% | 1 | 1 | 0% | 1,292 | 2,460 | +90% | 0 | 0 | — |
case-10 | fail→fail | 5,236 | 1,635 | -69% | 1 | 1 | 0% | 875 | 2,292 | +162% | 0 | 0 | — |
case-11 | pass→pass | 8,375 | 2,277 | -73% | 1 | 1 | 0% | 1,247 | 2,483 | +99% | 0 | 0 | — |
case-12 | fail→pass | 8,164 | 4,002 | -51% | 1 | 1 | 0% | 1,260 | 2,826 | +124% | 0 | 0 | — |
case-13 | pass→pass | 4,059 | 2,432 | -40% | 1 | 1 | 0% | 554 | 2,416 | +336% | 0 | 0 | — |
case-14 | pass→pass | 4,598 | 2,257 | -51% | 1 | 1 | 0% | 685 | 2,452 | +258% | 0 | 0 | — |
case-15 | fail→pass | 7,804 | 2,218 | -72% | 1 | 1 | 0% | 1,077 | 2,411 | +124% | 0 | 0 | — |
case-17 | pass→pass | 6,427 | 2,015 | -69% | 1 | 1 | 0% | 1,079 | 2,379 | +120% | 0 | 0 | — |
case-18 | pass→pass | 9,405 | 2,899 | -69% | 1 | 1 | 0% | 1,604 | 2,474 | +54% | 0 | 0 | — |
case-19 | fail→pass | 6,370 | 3,336 | -48% | 1 | 1 | 0% | 967 | 2,649 | +174% | 0 | 0 | — |
case-20 | pass→pass | 5,186 | 1,907 | -63% | 1 | 1 | 0% | 729 | 2,427 | +233% | 0 | 0 | — |
case-21 | fail→fail | 9,775 | 2,124 | -78% | 1 | 1 | 0% | 1,543 | 2,378 | +54% | 0 | 0 | — |
case-22 | pass→pass | 17,648 | 7,041 | -60% | 1 | 1 | 0% | 2,780 | 3,138 | +13% | 0 | 0 | — |
case-23 | pass→pass | 13,723 | 3,584 | -74% | 1 | 1 | 0% | 2,005 | 2,662 | +33% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +17 percentage points is the difference between those two pass rates over the 20 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.