@givolt/i3-composer-agent 0.0.0-stage → 0.6.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +22 -0
- package/.claude/commands/build.md +44 -0
- package/.claude/commands/code-simplify.md +22 -0
- package/.claude/commands/constraints.md +32 -0
- package/.claude/commands/plan.md +18 -0
- package/.claude/commands/review.md +16 -0
- package/.claude/commands/ship.md +72 -0
- package/.claude/commands/spec.md +17 -0
- package/.claude/commands/test.md +19 -0
- package/.claude/commands/webperf.md +32 -0
- package/.claude-plugin/marketplace.json +26 -0
- package/.claude-plugin/plugin.json +17 -0
- package/.codex-plugin/plugin.json +26 -0
- package/.gemini/commands/build.toml +43 -0
- package/.gemini/commands/code-simplify.toml +22 -0
- package/.gemini/commands/constraints.toml +32 -0
- package/.gemini/commands/planning.toml +18 -0
- package/.gemini/commands/review.toml +16 -0
- package/.gemini/commands/ship.toml +72 -0
- package/.gemini/commands/spec.toml +17 -0
- package/.gemini/commands/test.toml +19 -0
- package/.gemini/commands/webperf.toml +32 -0
- package/LICENSE +21 -0
- package/NOTICE.md +9 -0
- package/README.md +177 -2
- package/agents/code-reviewer.md +102 -0
- package/agents/security-auditor.md +112 -0
- package/agents/test-engineer.md +95 -0
- package/agents/web-performance-auditor.md +184 -0
- package/bin/i3-composer-agent.cjs +119 -0
- package/commands/build.toml +43 -0
- package/commands/code-simplify.toml +22 -0
- package/commands/constraints.toml +32 -0
- package/commands/planning.toml +18 -0
- package/commands/review.toml +16 -0
- package/commands/ship.toml +72 -0
- package/commands/spec.toml +17 -0
- package/commands/test.toml +19 -0
- package/commands/webperf.toml +32 -0
- package/docs/adoption-guide.md +129 -0
- package/docs/advanced-per-agent-configuration.md +70 -0
- package/docs/agents.md +123 -0
- package/docs/antigravity-setup.md +128 -0
- package/docs/codebuddy-setup.md +41 -0
- package/docs/codex-setup.md +34 -0
- package/docs/commandcode-setup.md +69 -0
- package/docs/comparison.md +131 -0
- package/docs/copilot-cli-setup.md +64 -0
- package/docs/copilot-setup.md +162 -0
- package/docs/cursor-setup.md +225 -0
- package/docs/developer-onboarding.md +116 -0
- package/docs/gemini-cli-setup.md +133 -0
- package/docs/getting-started.md +208 -0
- package/docs/opencode-setup.md +259 -0
- package/docs/other-hosts.md +7 -0
- package/docs/skill-anatomy.md +203 -0
- package/docs/windsurf-setup.md +48 -0
- package/evals/README.md +101 -0
- package/evals/cases/api-and-interface-design.json +45 -0
- package/evals/cases/browser-testing-with-devtools.json +44 -0
- package/evals/cases/ci-cd-and-automation.json +45 -0
- package/evals/cases/code-review-and-quality.json +49 -0
- package/evals/cases/code-simplification.json +45 -0
- package/evals/cases/constraint-driven-development.json +79 -0
- package/evals/cases/context-engineering.json +44 -0
- package/evals/cases/debugging-and-error-recovery.json +58 -0
- package/evals/cases/deprecation-and-migration.json +52 -0
- package/evals/cases/documentation-and-adrs.json +44 -0
- package/evals/cases/doubt-driven-development.json +43 -0
- package/evals/cases/frontend-ui-engineering.json +52 -0
- package/evals/cases/git-workflow-and-versioning.json +47 -0
- package/evals/cases/idea-refine.json +43 -0
- package/evals/cases/incremental-implementation.json +57 -0
- package/evals/cases/interview-me.json +42 -0
- package/evals/cases/observability-and-instrumentation.json +44 -0
- package/evals/cases/performance-optimization.json +53 -0
- package/evals/cases/planning-and-task-breakdown.json +45 -0
- package/evals/cases/security-and-hardening.json +53 -0
- package/evals/cases/shipping-and-launch.json +56 -0
- package/evals/cases/source-driven-development.json +44 -0
- package/evals/cases/spec-driven-development.json +72 -0
- package/evals/cases/test-driven-development.json +73 -0
- package/evals/cases/using-agent-skills.json +44 -0
- package/evals/fixtures/api-and-interface-design/service-brief.md +19 -0
- package/evals/fixtures/browser-testing-with-devtools/README.md +5 -0
- package/evals/fixtures/browser-testing-with-devtools/index.html +24 -0
- package/evals/fixtures/browser-testing-with-devtools/server.js +15 -0
- package/evals/fixtures/ci-cd-and-automation/package.json +8 -0
- package/evals/fixtures/ci-cd-and-automation/src/slug.js +3 -0
- package/evals/fixtures/ci-cd-and-automation/test/slug.test.js +9 -0
- package/evals/fixtures/code-review-and-quality/user-search.diff +16 -0
- package/evals/fixtures/code-simplification/config-parser.js +46 -0
- package/evals/fixtures/code-simplification/config-parser.test.js +15 -0
- package/evals/fixtures/context-engineering/context-audit.md +15 -0
- package/evals/fixtures/debugging-and-error-recovery/pagination.js +8 -0
- package/evals/fixtures/debugging-and-error-recovery/pagination.test.js +9 -0
- package/evals/fixtures/debugging-and-error-recovery/time-pressure.md +6 -0
- package/evals/fixtures/deprecation-and-migration/api-inventory.md +9 -0
- package/evals/fixtures/documentation-and-adrs/decision-context.md +16 -0
- package/evals/fixtures/doubt-driven-development/migration-plan.md +19 -0
- package/evals/fixtures/frontend-ui-engineering/Button.tsx +7 -0
- package/evals/fixtures/frontend-ui-engineering/design-system.md +11 -0
- package/evals/fixtures/git-workflow-and-versioning/.eval/working-tree.patch +21 -0
- package/evals/fixtures/git-workflow-and-versioning/app.js +7 -0
- package/evals/fixtures/git-workflow-and-versioning/app.test.js +9 -0
- package/evals/fixtures/incremental-implementation/reports.js +7 -0
- package/evals/fixtures/incremental-implementation/reports.test.js +12 -0
- package/evals/fixtures/incremental-implementation/tasks/plan.md +8 -0
- package/evals/fixtures/incremental-implementation-pressure/draft-export.js +17 -0
- package/evals/fixtures/incremental-implementation-pressure/scenario.md +9 -0
- package/evals/fixtures/observability-and-instrumentation/operations.md +11 -0
- package/evals/fixtures/observability-and-instrumentation/payment-retry.js +14 -0
- package/evals/fixtures/performance-optimization/benchmark.js +15 -0
- package/evals/fixtures/performance-optimization/products.js +14 -0
- package/evals/fixtures/planning-and-task-breakdown/notifications-spec.md +18 -0
- package/evals/fixtures/security-and-hardening/webhook.js +11 -0
- package/evals/fixtures/security-and-hardening/webhook.test.js +13 -0
- package/evals/fixtures/shipping-and-launch/authority-pressure.md +6 -0
- package/evals/fixtures/shipping-and-launch/launch-status.md +11 -0
- package/evals/fixtures/source-driven-development/framework-task.md +10 -0
- package/evals/fixtures/spec-driven-development/billing-brief.md +16 -0
- package/evals/fixtures/spec-driven-development-decomposition/portal-brief.md +22 -0
- package/evals/fixtures/test-driven-development/BUG.md +10 -0
- package/evals/fixtures/test-driven-development/README.md +28 -0
- package/evals/fixtures/test-driven-development/package.json +9 -0
- package/evals/fixtures/test-driven-development/src/split.js +8 -0
- package/evals/fixtures/test-driven-development/test/split.test.js +13 -0
- package/evals/fixtures/test-driven-development-ecosystem/README.md +9 -0
- package/evals/fixtures/test-driven-development-ecosystem/ledger.py +15 -0
- package/evals/fixtures/test-driven-development-ecosystem/test_ledger.py +19 -0
- package/evals/fixtures/using-agent-skills/incident.md +6 -0
- package/evals/plugin/code-review-fires/graders/off-by-one.md +7 -0
- package/evals/plugin/code-review-fires/graders/severity-labels.md +4 -0
- package/evals/plugin/code-review-fires/graders/skill-fired.md +5 -0
- package/evals/plugin/code-review-fires/prompt.md +31 -0
- package/evals/plugin/code-review-stays-quiet/graders/not-fired.md +8 -0
- package/evals/plugin/code-review-stays-quiet/graders/tdd-fired.md +6 -0
- package/evals/plugin/code-review-stays-quiet/prompt.md +8 -0
- package/evals/plugin/code-review-stays-quiet-on-commit-message/graders/not-fired.md +8 -0
- package/evals/plugin/code-review-stays-quiet-on-commit-message/prompt.md +25 -0
- package/evals/skill-impact.md +6 -0
- package/hooks/SDD-CACHE.md +167 -0
- package/hooks/SIMPLIFY-IGNORE.md +91 -0
- package/hooks/sdd-cache-post.sh +135 -0
- package/hooks/sdd-cache-pre.sh +106 -0
- package/hooks/sdd-cache-test.sh +246 -0
- package/hooks/session-start-test.sh +47 -0
- package/hooks/session-start.sh +33 -0
- package/hooks/simplify-ignore-test.sh +476 -0
- package/hooks/simplify-ignore.sh +352 -0
- package/package.json +31 -4
- package/plugin.json +5 -0
- package/rebrand/MAINTENANCE.md +51 -0
- package/rebrand/apply.cjs +121 -0
- package/rebrand/brand.json +9 -0
- package/rebrand/templates/README.md +178 -0
- package/rebrand/templates/codebuddy-setup.md +41 -0
- package/rebrand/templates/codex-setup.md +34 -0
- package/references/accessibility-checklist.md +160 -0
- package/references/definition-of-done.md +67 -0
- package/references/observability-checklist.md +92 -0
- package/references/orchestration-patterns.md +370 -0
- package/references/performance-checklist.md +236 -0
- package/references/security-checklist.md +248 -0
- package/references/testing-patterns.md +235 -0
- package/scripts/floor-guard-reference-test.js +291 -0
- package/scripts/lib/skill-lint-test.js +650 -0
- package/scripts/lib/skill-lint.js +584 -0
- package/scripts/run-evals-test.js +623 -0
- package/scripts/run-evals.js +638 -0
- package/scripts/validate-artifact-paths-test.js +179 -0
- package/scripts/validate-artifact-paths.js +128 -0
- package/scripts/validate-brand.cjs +36 -0
- package/scripts/validate-commands-test.js +216 -0
- package/scripts/validate-commands.js +222 -0
- package/scripts/validate-reference-links-test.js +495 -0
- package/scripts/validate-reference-links.js +187 -0
- package/scripts/validate-skills.js +69 -0
- package/scripts/validate-versions-test.js +32 -0
- package/scripts/validate-versions.js +35 -0
- package/skills/api-and-interface-design/SKILL.md +367 -0
- package/skills/browser-testing-with-devtools/SKILL.md +317 -0
- package/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/skills/code-review-and-quality/SKILL.md +398 -0
- package/skills/code-simplification/SKILL.md +331 -0
- package/skills/constraint-driven-development/SKILL.md +311 -0
- package/skills/constraint-driven-development/references/floor-guard.md +182 -0
- package/skills/context-engineering/SKILL.md +353 -0
- package/skills/debugging-and-error-recovery/SKILL.md +300 -0
- package/skills/deprecation-and-migration/SKILL.md +247 -0
- package/skills/documentation-and-adrs/SKILL.md +288 -0
- package/skills/doubt-driven-development/SKILL.md +243 -0
- package/skills/frontend-ui-engineering/SKILL.md +340 -0
- package/skills/git-workflow-and-versioning/SKILL.md +355 -0
- package/skills/idea-refine/SKILL.md +178 -0
- package/skills/idea-refine/examples.md +238 -0
- package/skills/idea-refine/frameworks.md +99 -0
- package/skills/idea-refine/refinement-criteria.md +113 -0
- package/skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/skills/incremental-implementation/SKILL.md +249 -0
- package/skills/interview-me/SKILL.md +235 -0
- package/skills/observability-and-instrumentation/SKILL.md +238 -0
- package/skills/performance-optimization/SKILL.md +267 -0
- package/skills/performance-optimization/references/optimization-patterns.md +250 -0
- package/skills/planning-and-task-breakdown/SKILL.md +257 -0
- package/skills/security-and-hardening/SKILL.md +216 -0
- package/skills/security-and-hardening/references/hardening-patterns.md +324 -0
- package/skills/shipping-and-launch/SKILL.md +330 -0
- package/skills/source-driven-development/SKILL.md +216 -0
- package/skills/spec-driven-development/SKILL.md +259 -0
- package/skills/test-driven-development/SKILL.md +398 -0
- package/skills/using-agent-skills/SKILL.md +192 -0
- package/tests/bundle.test.cjs +79 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "i3-composer-agent",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "i3 Composer Agent"
|
|
5
|
+
},
|
|
6
|
+
"plugins": [
|
|
7
|
+
{
|
|
8
|
+
"name": "i3-composer-agent",
|
|
9
|
+
"version": "0.6.12",
|
|
10
|
+
"description": "Production-grade engineering skills for AI coding agents covering the development lifecycle from spec to ship.",
|
|
11
|
+
"source": {
|
|
12
|
+
"source": "local",
|
|
13
|
+
"path": "./"
|
|
14
|
+
},
|
|
15
|
+
"policy": {
|
|
16
|
+
"installation": "AVAILABLE",
|
|
17
|
+
"authentication": "ON_INSTALL"
|
|
18
|
+
},
|
|
19
|
+
"category": "Productivity"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:incremental-implementation skill alongside i3-composer-agent:test-driven-development.
|
|
6
|
+
|
|
7
|
+
## Modes
|
|
8
|
+
|
|
9
|
+
- **`/build`** — implement the *next* pending task, then stop (careful, one slice at a time).
|
|
10
|
+
- **`/build auto`** — generate the plan if needed, get a single approval, then implement *every* task without stopping between them.
|
|
11
|
+
|
|
12
|
+
`$ARGUMENTS` selects the mode. Treat `auto` (canonical) or `all` as autonomous mode; anything else (or empty) is the default single-task mode. Note: autonomous mode is not faster *per task* — it runs the same test-driven loop — it only removes the human stepping *between* tasks.
|
|
13
|
+
|
|
14
|
+
## Default: one task
|
|
15
|
+
|
|
16
|
+
Pick the next pending task from the plan. Then:
|
|
17
|
+
|
|
18
|
+
1. Read the task's acceptance criteria
|
|
19
|
+
2. Load relevant context (existing code, patterns, types)
|
|
20
|
+
3. Write a failing test for the expected behavior (RED)
|
|
21
|
+
4. Implement the minimum code to pass the test (GREEN)
|
|
22
|
+
5. Run the full test suite to check for regressions
|
|
23
|
+
6. Run the build to verify compilation
|
|
24
|
+
7. Commit with a descriptive message
|
|
25
|
+
8. Mark the task complete and stop
|
|
26
|
+
|
|
27
|
+
## Autonomous: the whole plan (`/build auto`)
|
|
28
|
+
|
|
29
|
+
Use this once a spec exists and you want to collapse plan + build into one run. It removes the manual stepping between tasks — **not** the verification. Every task still earns a passing test and its own commit.
|
|
30
|
+
|
|
31
|
+
1. **Require a spec.** Look only for a spec at a known path: `SPEC.md` at the repo root, `docs/SPEC.md`, or a file under `spec/`. A README or arbitrary doc does **not** count. If none exists, stop and tell the user to run `/spec` first — do not invent requirements.
|
|
32
|
+
2. **Establish a clean baseline.** Run `git status --porcelain`. If there are uncommitted changes outside the expected planning artifacts (`SPEC.md`, `docs/SPEC.md`, `spec/*`, `tasks/plan.md`, `tasks/todo.md`), stop and ask the user to commit, stash, or confirm how to handle them. Autonomous per-task commits must not absorb unrelated local work, or the clean-rollback guarantee breaks.
|
|
33
|
+
3. **Plan if needed.** If there is no `tasks/plan.md`, invoke i3-composer-agent:planning-and-task-breakdown to generate one.
|
|
34
|
+
4. **Single checkpoint.** Present the full plan and wait for an unambiguous affirmative (e.g. "approve", "go", "yes"). Treat hedged responses ("looks reasonable", "I guess") as **not** approved. This is the only human gate — after approval, run autonomously. If you generated `tasks/plan.md`, commit it as a single preparatory commit now so it doesn't bleed into the first task's commit.
|
|
35
|
+
5. **Execute every task in dependency order.** Use each task's declared dependencies; if they aren't explicit, execute in the order the plan lists them. For each task, run the full default loop above (RED → GREEN → regression → build → commit → mark complete). Stage only the files that task touched plus its task-status update — never `git add -A` blindly — and make one commit per task so any point is a clean rollback.
|
|
36
|
+
6. **Stop and ask the user** (do not push through) when:
|
|
37
|
+
- a test can't be made to pass or the build breaks without an obvious fix → follow i3-composer-agent:debugging-and-error-recovery
|
|
38
|
+
- the spec is ambiguous, or a task needs a decision the spec doesn't cover
|
|
39
|
+
- a task is high-risk or irreversible — auth/permission changes, destructive data migrations, payments, deletions, deploys, anything touching secrets, **or anything you can't undo with `git revert`** → follow i3-composer-agent:doubt-driven-development and get explicit sign-off before continuing
|
|
40
|
+
|
|
41
|
+
After the user resolves a blocker, they re-invoke `/build auto` — it resumes from the next pending task.
|
|
42
|
+
7. **Summarize at the end:** tasks completed, tests added, commits made, and anything skipped, flagged, or left for the user.
|
|
43
|
+
|
|
44
|
+
If any step fails, follow the i3-composer-agent:debugging-and-error-recovery skill.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Simplify code for clarity and maintainability — reduce complexity without changing behavior
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:code-simplification skill.
|
|
6
|
+
|
|
7
|
+
Simplify recently changed code (or the specified scope) while preserving exact behavior:
|
|
8
|
+
|
|
9
|
+
1. Read CLAUDE.md and study project conventions
|
|
10
|
+
2. Identify the target code — recent changes unless a broader scope is specified
|
|
11
|
+
3. Understand the code's purpose, callers, edge cases, and test coverage before touching it
|
|
12
|
+
4. Scan for simplification opportunities:
|
|
13
|
+
- Deep nesting → guard clauses or extracted helpers
|
|
14
|
+
- Long functions → split by responsibility
|
|
15
|
+
- Nested ternaries → if/else or switch
|
|
16
|
+
- Generic names → descriptive names
|
|
17
|
+
- Duplicated logic → shared functions
|
|
18
|
+
- Dead code → remove after confirming
|
|
19
|
+
5. Apply each simplification incrementally — run tests after each change
|
|
20
|
+
6. Verify all tests pass, the build succeeds, and the diff is clean
|
|
21
|
+
|
|
22
|
+
If tests fail after a simplification, revert that change and reconsider. Use `code-review-and-quality` to review the result.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Define and enforce this project's quality bar — interview, sane defaults, CONSTRAINTS.md
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:constraint-driven-development skill.
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Default behaviour with no arguments: set up constraints for this repository.
|
|
10
|
+
|
|
11
|
+
1. **Detect first.** Read package.json / pyproject.toml / go.mod, the test runner, existing lint configs, current coverage output, CI workflows, and the agent harness in use. Report what you found in two lines. Never ask for anything you can read.
|
|
12
|
+
|
|
13
|
+
2. **Interview, at most four questions.** One at a time, each with your best guess and a usable default so "I don't know" still produces a working config:
|
|
14
|
+
- Which dimensions beyond the floor (coverage, security, performance, accessibility, architecture)
|
|
15
|
+
- Block or warn when a check fails mid-task
|
|
16
|
+
- Target numbers, or measure today's values and hold them
|
|
17
|
+
- Slowest check tolerated before handing work back
|
|
18
|
+
|
|
19
|
+
3. **Write CONSTRAINTS.md** at the repo root with a Floor section, enforced numbers, measured-only metrics with today's values, and an exceptions table with owners and expiry dates. Every number needs a stated reason.
|
|
20
|
+
|
|
21
|
+
4. **Install what each picked dimension needs.** A dimension with a number and no tool behind it is an aspiration. Use the de facto tool so existing config keeps working: Semgrep for code scanning, gitleaks (always `--redact`) for secrets, osv-scanner for dependencies, axe-core for accessibility, Lighthouse for web vitals, size-limit for bundles, dependency-cruiser for boundaries, Stryker for assertion quality. Record the exact command next to each rule in CONSTRAINTS.md. Accessibility and performance need a running URL; if the project has none, say so and drop the dimension rather than inventing a check. Add the commands to package.json as check:fast / check:task / check:full.
|
|
22
|
+
|
|
23
|
+
5. **Place each check by cost.** Types, lint and secrets in the edit loop (seconds). Related tests and changed-line coverage at task end (under 90s). Everything else at review or in CI. Scope checks to the diff, not the whole repo.
|
|
24
|
+
|
|
25
|
+
6. **Point the agent at it.** Add a line to CLAUDE.md telling agents to read CONSTRAINTS.md and never weaken it to make a change pass.
|
|
26
|
+
|
|
27
|
+
7. **Verify.** Run the constraints against the current branch. If anything fails that the user disagrees with, fix the constraint now rather than leaving a gate people will learn to ignore.
|
|
28
|
+
|
|
29
|
+
Sub-commands:
|
|
30
|
+
- `/constraints check` — run the current constraints against this branch and report
|
|
31
|
+
- `/constraints guard` — inspect the diff for a weakened bar: lowered thresholds, skipped or deleted tests, new suppression comments, unfinished stubs, new exceptions
|
|
32
|
+
- `/constraints ratchet` — record today's measured values as the floor that must not fall
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Break work into small verifiable tasks with acceptance criteria and dependency ordering
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:planning-and-task-breakdown skill.
|
|
6
|
+
|
|
7
|
+
Read the existing spec (SPEC.md or equivalent) and the relevant codebase sections. Then:
|
|
8
|
+
|
|
9
|
+
1. Enter plan mode — read only, no code changes
|
|
10
|
+
2. Identify the dependency graph between components
|
|
11
|
+
3. Slice work vertically (one complete path per task, not horizontal layers)
|
|
12
|
+
4. Write tasks with acceptance criteria and verification steps
|
|
13
|
+
5. Add checkpoints between phases
|
|
14
|
+
6. Present the plan for human review
|
|
15
|
+
|
|
16
|
+
Save the plan to tasks/plan.md and task list to tasks/todo.md.
|
|
17
|
+
|
|
18
|
+
If tasks/plan.md or tasks/todo.md already exists with unchecked tasks for different work, stop and ask before writing — never silently overwrite an incomplete plan.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Conduct a five-axis code review — correctness, readability, architecture, security, performance
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:code-review-and-quality skill.
|
|
6
|
+
|
|
7
|
+
Review the current changes (staged or recent commits) across all five axes:
|
|
8
|
+
|
|
9
|
+
1. **Correctness** — Does it match the spec? Edge cases handled? Tests adequate?
|
|
10
|
+
2. **Readability** — Clear names? Straightforward logic? Well-organized?
|
|
11
|
+
3. **Architecture** — Follows existing patterns? Clean boundaries? Right abstraction level?
|
|
12
|
+
4. **Security** — Input validated? Secrets safe? Auth checked? (Use security-and-hardening skill)
|
|
13
|
+
5. **Performance** — No N+1 queries? No unbounded ops? (Use performance-optimization skill)
|
|
14
|
+
|
|
15
|
+
Categorize findings as Critical, Important, or Suggestion.
|
|
16
|
+
Output a structured review with specific file:line references and fix recommendations.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run the pre-launch checklist via parallel fan-out to specialist personas, then synthesize a go/no-go decision
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:shipping-and-launch skill.
|
|
6
|
+
|
|
7
|
+
`/ship` is a **fan-out orchestrator**. It runs three specialist personas in parallel against the current change, then merges their reports into a single go/no-go decision with a rollback plan. The personas operate independently — no shared state, no ordering — which is what makes parallel execution safe and useful here.
|
|
8
|
+
|
|
9
|
+
## Phase A — Parallel fan-out
|
|
10
|
+
|
|
11
|
+
Spawn three subagents concurrently using the Agent tool. **Issue all three Agent tool calls in a single assistant turn so they execute in parallel** — sequential calls defeat the purpose of this command.
|
|
12
|
+
|
|
13
|
+
In Claude Code, each call passes `subagent_type` matching the persona's `name` field:
|
|
14
|
+
|
|
15
|
+
1. **`code-reviewer`** — Run a five-axis review (correctness, readability, architecture, security, performance) on the staged changes or recent commits. Output the standard review template.
|
|
16
|
+
2. **`security-auditor`** — Run a vulnerability and threat-model pass. Check OWASP Top 10, secrets handling, auth/authz, dependency CVEs. Output the standard audit report.
|
|
17
|
+
3. **`test-engineer`** — Analyze test coverage for the change. Identify gaps in happy path, edge cases, error paths, and concurrency scenarios. Output the standard coverage analysis.
|
|
18
|
+
|
|
19
|
+
In other harnesses without an Agent tool, invoke each persona's system prompt sequentially and treat their outputs as if returned in parallel — the merge phase still works.
|
|
20
|
+
|
|
21
|
+
Constraints (from Claude Code's subagent model):
|
|
22
|
+
- Subagents cannot spawn other subagents — do not let one persona delegate to another.
|
|
23
|
+
- Each subagent gets its own context window and returns only its report to this main session.
|
|
24
|
+
- If you need teammates that talk to each other instead of just reporting back, use Claude Code Agent Teams and reference these personas as teammate types (see `references/orchestration-patterns.md`).
|
|
25
|
+
|
|
26
|
+
**Persona resolution.** If you've defined your own `code-reviewer`, `security-auditor`, or `test-engineer` in `.claude/agents/` or `~/.claude/agents/`, those take precedence over this plugin's versions — `/ship` picks up your customizations automatically. This is intentional: plugin subagents sit at the bottom of Claude Code's scope priority table, so user-level definitions win by design.
|
|
27
|
+
|
|
28
|
+
## Phase B — Merge in main context
|
|
29
|
+
|
|
30
|
+
Once all three reports are back, the main agent (not a sub-persona) synthesizes them:
|
|
31
|
+
|
|
32
|
+
1. **Code Quality** — Aggregate Critical/Important findings from `code-reviewer` and any failing tests, lint, or build output. Resolve duplicates between reviewers.
|
|
33
|
+
2. **Security** — Promote any Critical/High `security-auditor` findings to launch blockers. Cross-reference with `code-reviewer`'s security axis.
|
|
34
|
+
3. **Performance** — Pull from `code-reviewer`'s performance axis; cross-check Core Web Vitals if applicable.
|
|
35
|
+
4. **Accessibility** — Verify keyboard nav, screen reader support, contrast (not covered by the three personas — handle directly here, or invoke the accessibility checklist).
|
|
36
|
+
5. **Infrastructure** — Env vars, migrations, monitoring, feature flags. Verify directly.
|
|
37
|
+
6. **Documentation** — README, ADRs, changelog. Verify directly.
|
|
38
|
+
|
|
39
|
+
## Phase C — Decision and rollback
|
|
40
|
+
|
|
41
|
+
Produce a single output:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## Ship Decision: GO | NO-GO
|
|
45
|
+
|
|
46
|
+
### Blockers (must fix before ship)
|
|
47
|
+
- [Source persona: Critical finding + file:line]
|
|
48
|
+
|
|
49
|
+
### Recommended fixes (should fix before ship)
|
|
50
|
+
- [Source persona: Important finding + file:line]
|
|
51
|
+
|
|
52
|
+
### Acknowledged risks (shipping anyway)
|
|
53
|
+
- [Risk + mitigation]
|
|
54
|
+
|
|
55
|
+
### Rollback plan
|
|
56
|
+
- Trigger conditions: [what signals would prompt rollback]
|
|
57
|
+
- Rollback procedure: [exact steps]
|
|
58
|
+
- Recovery time objective: [target]
|
|
59
|
+
|
|
60
|
+
### Specialist reports (full)
|
|
61
|
+
- [code-reviewer report]
|
|
62
|
+
- [security-auditor report]
|
|
63
|
+
- [test-engineer report]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Rules
|
|
67
|
+
|
|
68
|
+
1. The three Phase A personas run in parallel — never sequentially.
|
|
69
|
+
2. Personas do not call each other. The main agent merges in Phase B.
|
|
70
|
+
3. The rollback plan is mandatory before any GO decision.
|
|
71
|
+
4. If any persona returns a Critical finding, the default verdict is NO-GO unless the user explicitly accepts the risk.
|
|
72
|
+
5. **Skip the fan-out only if all of the following are true:** the change touches 2 files or fewer, the diff is under 50 lines, and it does not touch auth, payments, data access, or config/env. Otherwise, default to fan-out. `/ship` is designed for production-bound changes — when the blast radius is non-trivial, run the parallel review even if the diff looks small.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start spec-driven development — write a structured specification before writing code
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:spec-driven-development skill.
|
|
6
|
+
|
|
7
|
+
Begin by understanding what the user wants to build. Ask clarifying questions about:
|
|
8
|
+
1. The objective and target users
|
|
9
|
+
2. Core features and acceptance criteria
|
|
10
|
+
3. Tech stack preferences and constraints
|
|
11
|
+
4. Known boundaries (what to always do, ask first about, and never do)
|
|
12
|
+
|
|
13
|
+
Then generate a structured spec covering all six core areas: objective, commands, project structure, code style, testing strategy, and boundaries.
|
|
14
|
+
|
|
15
|
+
If the request bundles several independently testable capabilities, first propose a capability map (module ids, dependency direction, build order) per the skill's Phase 0 and get it approved, then spec each module in dependency order.
|
|
16
|
+
|
|
17
|
+
Save the spec as SPEC.md in the project root and confirm with the user before proceeding.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run TDD workflow — write failing tests, implement, verify. For bugs, use the Prove-It pattern.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Invoke the i3-composer-agent:test-driven-development skill.
|
|
6
|
+
|
|
7
|
+
For new features:
|
|
8
|
+
1. Write tests that describe the expected behavior (they should FAIL)
|
|
9
|
+
2. Implement the code to make them pass
|
|
10
|
+
3. Refactor while keeping tests green
|
|
11
|
+
|
|
12
|
+
For bug fixes (Prove-It pattern):
|
|
13
|
+
1. Write a test that reproduces the bug (must FAIL)
|
|
14
|
+
2. Confirm the test fails
|
|
15
|
+
3. Implement the fix
|
|
16
|
+
4. Confirm the test passes
|
|
17
|
+
5. Run the full test suite for regressions
|
|
18
|
+
|
|
19
|
+
For browser-related issues, also invoke i3-composer-agent:browser-testing-with-devtools to verify with Chrome DevTools MCP.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a web performance audit via the web-performance-auditor persona
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
`/webperf` targets web applications specifically. Do not use it for utility libraries, CLIs, or server-only code with no browser-facing output.
|
|
6
|
+
|
|
7
|
+
## Determine the mode
|
|
8
|
+
|
|
9
|
+
**Deep mode** — activate when any of these is available:
|
|
10
|
+
- A Lighthouse JSON report file (e.g. `npx lighthouse <url> --output json --output-path ./report.json`, or `npx -p chrome-devtools-mcp chrome-devtools lighthouse_audit --output-format=json` from the Chrome DevTools MCP CLI)
|
|
11
|
+
- A PageSpeed Insights JSON response (includes Lighthouse + CrUX)
|
|
12
|
+
- A CrUX API response (requires `CRUX_API_KEY` or `GOOGLE_API_KEY`)
|
|
13
|
+
- A DevTools performance trace
|
|
14
|
+
- A live URL plus the `chrome-devtools` MCP server configured in the harness (the agent can capture metrics directly via `lighthouse_audit` and `performance_*` tools)
|
|
15
|
+
- The Chrome DevTools MCP CLI invoked locally (via `npx -p chrome-devtools-mcp chrome-devtools <tool>` or after `npm i -g chrome-devtools-mcp`) — the user runs commands like `chrome-devtools lighthouse_audit --output-format=json` and passes the JSON output to the agent
|
|
16
|
+
|
|
17
|
+
**Quick mode** — default when none of the above are available. The agent scans source code for structural anti-patterns and labels every finding as `potential impact`.
|
|
18
|
+
|
|
19
|
+
## Run the audit
|
|
20
|
+
|
|
21
|
+
Spawn the `web-performance-auditor` subagent. Pass it explicitly:
|
|
22
|
+
|
|
23
|
+
- The files, components, or diff under review
|
|
24
|
+
- Any artifact paths (Lighthouse JSON, PSI JSON, CrUX response, trace) or pasted JSON content
|
|
25
|
+
- The target URL or page name when known
|
|
26
|
+
- A note on which mode you expect (Quick or Deep), so the agent surfaces missing inputs if Deep was intended
|
|
27
|
+
|
|
28
|
+
The subagent returns a scorecard (only populated with sourced values), a ranked list of findings, positive observations, and proactive recommendations.
|
|
29
|
+
|
|
30
|
+
## Output
|
|
31
|
+
|
|
32
|
+
Return the full audit report to the user. No synthesis or merge step is needed — this is a single-persona command.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
|
|
3
|
+
"name": "i3-composer-agent",
|
|
4
|
+
"description": "Production-grade engineering skills for AI coding agents covering the development lifecycle from spec to ship.",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "Givolt"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "i3-composer-agent",
|
|
11
|
+
"version": "0.6.12",
|
|
12
|
+
"source": "./",
|
|
13
|
+
"description": "Production-grade engineering skills for AI coding agents covering the development lifecycle from spec to ship.",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"keywords": [
|
|
16
|
+
"skills",
|
|
17
|
+
"agents",
|
|
18
|
+
"engineering",
|
|
19
|
+
"spec",
|
|
20
|
+
"tdd",
|
|
21
|
+
"review",
|
|
22
|
+
"ship"
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "i3-composer-agent",
|
|
3
|
+
"version": "0.6.12",
|
|
4
|
+
"description": "Production-grade engineering skills for AI coding agents covering the development lifecycle from spec to ship.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Givolt"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"commands": [
|
|
10
|
+
"./.claude/commands",
|
|
11
|
+
"./commands"
|
|
12
|
+
],
|
|
13
|
+
"skills": "./skills",
|
|
14
|
+
"experimental": {
|
|
15
|
+
"evals": "evals/plugin"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "i3-composer-agent",
|
|
3
|
+
"version": "0.6.12",
|
|
4
|
+
"description": "Production-grade engineering skills for AI coding agents covering the development lifecycle from spec to ship.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Givolt"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"skills": "./skills/",
|
|
10
|
+
"interface": {
|
|
11
|
+
"displayName": "i3 Composer Agent",
|
|
12
|
+
"shortDescription": "Engineering workflow skills",
|
|
13
|
+
"longDescription": "i3 Composer Agent packages 25 engineering skills from Addy Osmani's Agent Skills, covering requirements, planning, implementation, testing, review, and shipping.",
|
|
14
|
+
"developerName": "Givolt",
|
|
15
|
+
"category": "Productivity",
|
|
16
|
+
"capabilities": [
|
|
17
|
+
"Interactive",
|
|
18
|
+
"Read",
|
|
19
|
+
"Write"
|
|
20
|
+
],
|
|
21
|
+
"defaultPrompt": [
|
|
22
|
+
"Help me choose the right engineering workflow for this task",
|
|
23
|
+
"Plan and implement this change using the relevant i3 Composer Agent"
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
description = "Implement tasks incrementally — build, test, verify, commit. Add \"auto\" to run the whole plan in one approved pass."
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the incremental-implementation skill alongside test-driven-development.
|
|
5
|
+
|
|
6
|
+
## Modes
|
|
7
|
+
|
|
8
|
+
- `/build` — implement the next pending task, then stop (careful, one slice at a time).
|
|
9
|
+
- `/build auto` — generate the plan if needed, get a single approval, then implement every task without stopping between them.
|
|
10
|
+
|
|
11
|
+
The arguments select the mode. Treat `auto` (canonical) or `all` as autonomous mode; anything else (or empty) is the default single-task mode. Note: autonomous mode is not faster per task — it runs the same test-driven loop — it only removes the human stepping between tasks.
|
|
12
|
+
|
|
13
|
+
## Default: one task
|
|
14
|
+
|
|
15
|
+
Pick the next pending task from the plan. Then:
|
|
16
|
+
|
|
17
|
+
1. Read the task's acceptance criteria
|
|
18
|
+
2. Load relevant context (existing code, patterns, types)
|
|
19
|
+
3. Write a failing test for the expected behavior (RED)
|
|
20
|
+
4. Implement the minimum code to pass the test (GREEN)
|
|
21
|
+
5. Run the full test suite to check for regressions
|
|
22
|
+
6. Run the build to verify compilation
|
|
23
|
+
7. Commit with a descriptive message
|
|
24
|
+
8. Mark the task complete and stop
|
|
25
|
+
|
|
26
|
+
## Autonomous: the whole plan (`/build auto`)
|
|
27
|
+
|
|
28
|
+
Use this once a spec exists and you want to collapse plan + build into one run. It removes the manual stepping between tasks — not the verification. Every task still earns a passing test and its own commit.
|
|
29
|
+
|
|
30
|
+
1. Require a spec. Look only for a spec at a known path: SPEC.md at the repo root, docs/SPEC.md, or a file under spec/. A README or arbitrary doc does NOT count. If none exists, stop and tell the user to run /spec first — do not invent requirements.
|
|
31
|
+
2. Establish a clean baseline. Run `git status --porcelain`. If there are uncommitted changes outside the expected planning artifacts (SPEC.md, docs/SPEC.md, spec/*, tasks/plan.md, tasks/todo.md), stop and ask the user to commit, stash, or confirm how to handle them. Autonomous per-task commits must not absorb unrelated local work, or the clean-rollback guarantee breaks.
|
|
32
|
+
3. Plan if needed. If there is no tasks/plan.md, invoke the planning-and-task-breakdown skill to generate one.
|
|
33
|
+
4. Single checkpoint. Present the full plan and wait for an unambiguous affirmative (e.g. "approve", "go", "yes"). Treat hedged responses ("looks reasonable", "I guess") as NOT approved. This is the only human gate — after approval, run autonomously. If you generated tasks/plan.md, commit it as a single preparatory commit now so it doesn't bleed into the first task's commit.
|
|
34
|
+
5. Execute every task in dependency order. Use each task's declared dependencies; if they aren't explicit, execute in the order the plan lists them. For each task, run the full default loop above (RED → GREEN → regression → build → commit → mark complete). Stage only the files that task touched plus its task-status update — never `git add -A` blindly — and make one commit per task so any point is a clean rollback.
|
|
35
|
+
6. Stop and ask the user (do not push through) when:
|
|
36
|
+
- a test can't be made to pass or the build breaks without an obvious fix → follow the debugging-and-error-recovery skill
|
|
37
|
+
- the spec is ambiguous, or a task needs a decision the spec doesn't cover
|
|
38
|
+
- a task is high-risk or irreversible — auth/permission changes, destructive data migrations, payments, deletions, deploys, anything touching secrets, or anything you can't undo with `git revert` → follow the doubt-driven-development skill and get explicit sign-off before continuing
|
|
39
|
+
After the user resolves a blocker, they re-invoke /build auto — it resumes from the next pending task.
|
|
40
|
+
7. Summarize at the end: tasks completed, tests added, commits made, and anything skipped, flagged, or left for the user.
|
|
41
|
+
|
|
42
|
+
If any step fails, follow the debugging-and-error-recovery skill.
|
|
43
|
+
"""
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
description = "Simplify code for clarity and maintainability — reduce complexity without changing behavior"
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the code-simplification skill.
|
|
5
|
+
|
|
6
|
+
Simplify recently changed code (or the specified scope) while preserving exact behavior:
|
|
7
|
+
|
|
8
|
+
1. Read GEMINI.md and study project conventions
|
|
9
|
+
2. Identify the target code — recent changes unless a broader scope is specified
|
|
10
|
+
3. Understand the code's purpose, callers, edge cases, and test coverage before touching it
|
|
11
|
+
4. Scan for simplification opportunities:
|
|
12
|
+
- Deep nesting → guard clauses or extracted helpers
|
|
13
|
+
- Long functions → split by responsibility
|
|
14
|
+
- Nested ternaries → if/else or switch
|
|
15
|
+
- Generic names → descriptive names
|
|
16
|
+
- Duplicated logic → shared functions
|
|
17
|
+
- Dead code → remove after confirming
|
|
18
|
+
5. Apply each simplification incrementally — run tests after each change
|
|
19
|
+
6. Verify all tests pass, the build succeeds, and the diff is clean
|
|
20
|
+
|
|
21
|
+
If tests fail after a simplification, revert that change and reconsider. Use `code-review-and-quality` to review the result.
|
|
22
|
+
"""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
description = "Define and enforce this project's quality bar — interview, sane defaults, CONSTRAINTS.md"
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the constraint-driven-development skill.
|
|
5
|
+
|
|
6
|
+
$ARGUMENTS
|
|
7
|
+
|
|
8
|
+
Default behaviour with no arguments: set up constraints for this repository.
|
|
9
|
+
|
|
10
|
+
1. **Detect first.** Read package.json / pyproject.toml / go.mod, the test runner, existing lint configs, current coverage output, CI workflows, and the agent harness in use. Report what you found in two lines. Never ask for anything you can read.
|
|
11
|
+
|
|
12
|
+
2. **Interview, at most four questions.** One at a time, each with your best guess and a usable default so "I don't know" still produces a working config:
|
|
13
|
+
- Which dimensions beyond the floor (coverage, security, performance, accessibility, architecture)
|
|
14
|
+
- Block or warn when a check fails mid-task
|
|
15
|
+
- Target numbers, or measure today's values and hold them
|
|
16
|
+
- Slowest check tolerated before handing work back
|
|
17
|
+
|
|
18
|
+
3. **Write CONSTRAINTS.md** at the repo root with a Floor section, enforced numbers, measured-only metrics with today's values, and an exceptions table with owners and expiry dates. Every number needs a stated reason.
|
|
19
|
+
|
|
20
|
+
4. **Install what each picked dimension needs.** A dimension with a number and no tool behind it is an aspiration. Use the de facto tool so existing config keeps working: Semgrep for code scanning, gitleaks (always `--redact`) for secrets, osv-scanner for dependencies, axe-core for accessibility, Lighthouse for web vitals, size-limit for bundles, dependency-cruiser for boundaries, Stryker for assertion quality. Record the exact command next to each rule in CONSTRAINTS.md. Accessibility and performance need a running URL; if the project has none, say so and drop the dimension rather than inventing a check. Add the commands to package.json as check:fast / check:task / check:full.
|
|
21
|
+
|
|
22
|
+
5. **Place each check by cost.** Types, lint and secrets in the edit loop (seconds). Related tests and changed-line coverage at task end (under 90s). Everything else at review or in CI. Scope checks to the diff, not the whole repo.
|
|
23
|
+
|
|
24
|
+
6. **Point the agent at it.** Add a line to AGENTS.md and GEMINI.md telling agents to read CONSTRAINTS.md and never weaken it to make a change pass.
|
|
25
|
+
|
|
26
|
+
7. **Verify.** Run the constraints against the current branch. If anything fails that the user disagrees with, fix the constraint now rather than leaving a gate people will learn to ignore.
|
|
27
|
+
|
|
28
|
+
Sub-commands:
|
|
29
|
+
- `/constraints check` — run the current constraints against this branch and report
|
|
30
|
+
- `/constraints guard` — inspect the diff for a weakened bar: lowered thresholds, skipped or deleted tests, new suppression comments, unfinished stubs, new exceptions
|
|
31
|
+
- `/constraints ratchet` — record today's measured values as the floor that must not fall
|
|
32
|
+
"""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
description = "Break work into small verifiable tasks with acceptance criteria and dependency ordering"
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the planning-and-task-breakdown skill.
|
|
5
|
+
|
|
6
|
+
Read the existing spec (SPEC.md or equivalent) and the relevant codebase sections. Then:
|
|
7
|
+
|
|
8
|
+
1. Enter plan mode — read only, no code changes
|
|
9
|
+
2. Identify the dependency graph between components
|
|
10
|
+
3. Slice work vertically (one complete path per task, not horizontal layers)
|
|
11
|
+
4. Write tasks with acceptance criteria and verification steps
|
|
12
|
+
5. Add checkpoints between phases
|
|
13
|
+
6. Present the plan for human review
|
|
14
|
+
|
|
15
|
+
Save the plan to tasks/plan.md and task list to tasks/todo.md.
|
|
16
|
+
|
|
17
|
+
If tasks/plan.md or tasks/todo.md already exists with unchecked tasks for different work, stop and ask before writing — never silently overwrite an incomplete plan.
|
|
18
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
description = "Conduct a five-axis code review — correctness, readability, architecture, security, performance"
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the code-review-and-quality skill.
|
|
5
|
+
|
|
6
|
+
Review the current changes (staged or recent commits) across all five axes:
|
|
7
|
+
|
|
8
|
+
1. **Correctness** — Does it match the spec? Edge cases handled? Tests adequate?
|
|
9
|
+
2. **Readability** — Clear names? Straightforward logic? Well-organized?
|
|
10
|
+
3. **Architecture** — Follows existing patterns? Clean boundaries? Right abstraction level?
|
|
11
|
+
4. **Security** — Input validated? Secrets safe? Auth checked? (Use security-and-hardening skill)
|
|
12
|
+
5. **Performance** — No N+1 queries? No unbounded ops? (Use performance-optimization skill)
|
|
13
|
+
|
|
14
|
+
Categorize findings as Critical, Important, or Suggestion.
|
|
15
|
+
Output a structured review with specific file:line references and fix recommendations.
|
|
16
|
+
"""
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
description = "Run the pre-launch checklist via parallel fan-out to specialist personas, then synthesize a go/no-go decision"
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the shipping-and-launch skill.
|
|
5
|
+
|
|
6
|
+
`/ship` is a **fan-out orchestrator**. It runs three specialist personas in parallel against the current change, then merges their reports into a single go/no-go decision with a rollback plan. The personas operate independently — no shared state, no ordering — which is what makes parallel execution safe and useful here.
|
|
7
|
+
|
|
8
|
+
## Phase A — Parallel fan-out
|
|
9
|
+
|
|
10
|
+
Spawn three subagents concurrently. Gemini CLI exposes each custom subagent in `agents/` as a tool with the same name — so `code-reviewer.md` becomes a `code-reviewer` tool the main agent can call, and `@code-reviewer` works as an explicit invocation in the prompt. **Issue all three subagent tool calls in a single assistant turn so they execute in parallel** — sequential calls defeat the purpose of this command.
|
|
11
|
+
|
|
12
|
+
Dispatch each persona by tool name:
|
|
13
|
+
|
|
14
|
+
1. **`code-reviewer`** — Run a five-axis review (correctness, readability, architecture, security, performance) on the staged changes or recent commits. Output the standard review template.
|
|
15
|
+
2. **`security-auditor`** — Run a vulnerability and threat-model pass. Check OWASP Top 10, secrets handling, auth/authz, dependency CVEs. Output the standard audit report.
|
|
16
|
+
3. **`test-engineer`** — Analyze test coverage for the change. Identify gaps in happy path, edge cases, error paths, and concurrency scenarios. Output the standard coverage analysis.
|
|
17
|
+
|
|
18
|
+
If subagents are unavailable in the current Gemini CLI version, invoke each persona's system prompt sequentially in the main context and treat their outputs as if returned in parallel — the merge phase still works.
|
|
19
|
+
|
|
20
|
+
Constraints (from Gemini CLI's subagent model):
|
|
21
|
+
- Subagents run in isolated context loops and return only their report to this main session.
|
|
22
|
+
- Do not let one persona delegate to another — keep the fan-out flat.
|
|
23
|
+
- For richer multi-agent collaboration where teammates talk to each other instead of just reporting back, see `references/orchestration-patterns.md`.
|
|
24
|
+
|
|
25
|
+
**Persona resolution.** If you've defined your own `code-reviewer`, `security-auditor`, or `test-engineer` in `agents/` (this plugin's agents, at the repo root) or `~/.gemini/agents/` (user-level), those take precedence over this plugin's versions — `/ship` picks up your customizations automatically. This is intentional: plugin subagents sit at the bottom of Gemini CLI's scope priority table, so user-level definitions win by design.
|
|
26
|
+
|
|
27
|
+
## Phase B — Merge in main context
|
|
28
|
+
|
|
29
|
+
Once all three reports are back, the main agent (not a sub-persona) synthesizes them:
|
|
30
|
+
|
|
31
|
+
1. **Code Quality** — Aggregate Critical/Important findings from `code-reviewer` and any failing tests, lint, or build output. Resolve duplicates between reviewers.
|
|
32
|
+
2. **Security** — Promote any Critical/High `security-auditor` findings to launch blockers. Cross-reference with `code-reviewer`'s security axis.
|
|
33
|
+
3. **Performance** — Pull from `code-reviewer`'s performance axis; cross-check Core Web Vitals if applicable.
|
|
34
|
+
4. **Accessibility** — Verify keyboard nav, screen reader support, contrast (not covered by the three personas — handle directly here, or invoke the accessibility checklist).
|
|
35
|
+
5. **Infrastructure** — Env vars, migrations, monitoring, feature flags. Verify directly.
|
|
36
|
+
6. **Documentation** — README, ADRs, changelog. Verify directly.
|
|
37
|
+
|
|
38
|
+
## Phase C — Decision and rollback
|
|
39
|
+
|
|
40
|
+
Produce a single output:
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
## Ship Decision: GO | NO-GO
|
|
44
|
+
|
|
45
|
+
### Blockers (must fix before ship)
|
|
46
|
+
- [Source persona: Critical finding + file:line]
|
|
47
|
+
|
|
48
|
+
### Recommended fixes (should fix before ship)
|
|
49
|
+
- [Source persona: Important finding + file:line]
|
|
50
|
+
|
|
51
|
+
### Acknowledged risks (shipping anyway)
|
|
52
|
+
- [Risk + mitigation]
|
|
53
|
+
|
|
54
|
+
### Rollback plan
|
|
55
|
+
- Trigger conditions: [what signals would prompt rollback]
|
|
56
|
+
- Rollback procedure: [exact steps]
|
|
57
|
+
- Recovery time objective: [target]
|
|
58
|
+
|
|
59
|
+
### Specialist reports (full)
|
|
60
|
+
- [code-reviewer report]
|
|
61
|
+
- [security-auditor report]
|
|
62
|
+
- [test-engineer report]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Rules
|
|
66
|
+
|
|
67
|
+
1. The three Phase A personas run in parallel — never sequentially.
|
|
68
|
+
2. Personas do not call each other. The main agent merges in Phase B.
|
|
69
|
+
3. The rollback plan is mandatory before any GO decision.
|
|
70
|
+
4. If any persona returns a Critical finding, the default verdict is NO-GO unless the user explicitly accepts the risk.
|
|
71
|
+
5. **Skip the fan-out only if all of the following are true:** the change touches 2 files or fewer, the diff is under 50 lines, and it does not touch auth, payments, data access, or config/env. Otherwise, default to fan-out. `/ship` is designed for production-bound changes — when the blast radius is non-trivial, run the parallel review even if the diff looks small.
|
|
72
|
+
"""
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
description = "Start spec-driven development — write a structured specification before writing code"
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the spec-driven-development skill.
|
|
5
|
+
|
|
6
|
+
Begin by understanding what the user wants to build. Ask clarifying questions about:
|
|
7
|
+
1. The objective and target users
|
|
8
|
+
2. Core features and acceptance criteria
|
|
9
|
+
3. Tech stack preferences and constraints
|
|
10
|
+
4. Known boundaries (what to always do, ask first about, and never do)
|
|
11
|
+
|
|
12
|
+
Then generate a structured spec covering all six core areas: objective, commands, project structure, code style, testing strategy, and boundaries.
|
|
13
|
+
|
|
14
|
+
If the request bundles several independently testable capabilities, first propose a capability map (module ids, dependency direction, build order) per the skill's Phase 0 and get it approved, then spec each module in dependency order.
|
|
15
|
+
|
|
16
|
+
Save the spec as SPEC.md in the project root and confirm with the user before proceeding.
|
|
17
|
+
"""
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
description = "Run TDD workflow — write failing tests, implement, verify. For bugs, use the Prove-It pattern."
|
|
2
|
+
|
|
3
|
+
prompt = """
|
|
4
|
+
Invoke the test-driven-development skill.
|
|
5
|
+
|
|
6
|
+
For new features:
|
|
7
|
+
1. Write tests that describe the expected behavior (they should FAIL)
|
|
8
|
+
2. Implement the code to make them pass
|
|
9
|
+
3. Refactor while keeping tests green
|
|
10
|
+
|
|
11
|
+
For bug fixes (Prove-It pattern):
|
|
12
|
+
1. Write a test that reproduces the bug (must FAIL)
|
|
13
|
+
2. Confirm the test fails
|
|
14
|
+
3. Implement the fix
|
|
15
|
+
4. Confirm the test passes
|
|
16
|
+
5. Run the full test suite for regressions
|
|
17
|
+
|
|
18
|
+
For browser-related issues, also invoke browser-testing-with-devtools to verify with Chrome DevTools MCP.
|
|
19
|
+
"""
|