@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,178 @@
|
|
|
1
|
+
# i3 Composer Agent
|
|
2
|
+
|
|
3
|
+
**Intelligence. Integration. Innovation.**
|
|
4
|
+
|
|
5
|
+
Production-grade engineering skills, lifecycle commands, and specialist personas
|
|
6
|
+
for AI coding agents. This is the engineering-skill product in the i3 Composer
|
|
7
|
+
family; the GSD-derived workflow product is maintained separately.
|
|
8
|
+
|
|
9
|
+
Based on [Agent Skills](https://github.com/addyosmani/agent-skills) by Addy Osmani
|
|
10
|
+
(MIT). See [NOTICE.md](NOTICE.md) for attribution and the upstream baseline.
|
|
11
|
+
|
|
12
|
+
## Prepare the complete plugin with npx
|
|
13
|
+
|
|
14
|
+
The npm package is `@givolt/i3-composer-agent`. The plugin and marketplace ID is
|
|
15
|
+
`i3-composer-agent`. Skill IDs and workflow behavior retain their upstream names.
|
|
16
|
+
|
|
17
|
+
Once the package is published, run this in the project where you want to use it:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @givolt/i3-composer-agent --codebuddy
|
|
21
|
+
# Or prepare a bundle for another host:
|
|
22
|
+
npx @givolt/i3-composer-agent --codex
|
|
23
|
+
npx @givolt/i3-composer-agent --claude
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The CLI prepares a persistent `./i3-composer-agent/` directory with all 25 skills,
|
|
27
|
+
9 commands, 4 personas, and shared references. It prints the native registration
|
|
28
|
+
commands; run those in the selected host to enable the plugin.
|
|
29
|
+
|
|
30
|
+
### CodeBuddy / Claude Code
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
/plugin marketplace add ./i3-composer-agent
|
|
34
|
+
/plugin install i3-composer-agent@i3-composer-agent
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Use the absolute directory printed by the CLI if the host has a different
|
|
38
|
+
working directory. See [CodeBuddy setup](docs/codebuddy-setup.md).
|
|
39
|
+
|
|
40
|
+
### Codex
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
codex plugin marketplace add ./i3-composer-agent
|
|
44
|
+
codex plugin add i3-composer-agent@i3-composer-agent
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Start a new Codex session. Invoke the existing skills by name, using `/skills`
|
|
48
|
+
or `$spec-driven-development` in CLI/IDE. This conversion preserves Codex's
|
|
49
|
+
skill adapter; lifecycle slash-command adaptation is a separate task.
|
|
50
|
+
See [Codex setup](docs/codex-setup.md).
|
|
51
|
+
|
|
52
|
+
### Bundle options
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx @givolt/i3-composer-agent --extract --dir /path/to/i3-composer-agent
|
|
56
|
+
npx @givolt/i3-composer-agent --codebuddy --dir /path/to/plugin --dry-run
|
|
57
|
+
npx @givolt/i3-composer-agent --codebuddy --dir /path/to/plugin --force
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
An existing directory is refused unless `--force` targets an i3 Composer Agent
|
|
61
|
+
bundle. Replacement keeps the previous directory as a backup. No repository
|
|
62
|
+
AGENTS.md or CLAUDE.md is copied into the target project.
|
|
63
|
+
|
|
64
|
+
## Commands
|
|
65
|
+
|
|
66
|
+
Hosts supporting Claude-compatible plugin commands load these workflows.
|
|
67
|
+
Use the namespaced form, for example `/i3-composer-agent:spec`.
|
|
68
|
+
|
|
69
|
+
| Command | Workflow |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| `/i3-composer-agent:spec` | Define objectives, constraints, and acceptance criteria |
|
|
72
|
+
| `/i3-composer-agent:plan` | Write ordered, verifiable tasks |
|
|
73
|
+
| `/i3-composer-agent:build` | Implement the next task with verification |
|
|
74
|
+
| `/i3-composer-agent:build auto` | Execute the approved plan with per-task verification |
|
|
75
|
+
| `/i3-composer-agent:test` | Test-first development and regression checks |
|
|
76
|
+
| `/i3-composer-agent:constraints` | Establish a written quality bar |
|
|
77
|
+
| `/i3-composer-agent:review` | Review code quality and correctness |
|
|
78
|
+
| `/i3-composer-agent:webperf` | Audit web performance |
|
|
79
|
+
| `/i3-composer-agent:code-simplify` | Simplify code without changing behavior |
|
|
80
|
+
| `/i3-composer-agent:ship` | Review launch readiness and rollback |
|
|
81
|
+
|
|
82
|
+
## All 25 Skills
|
|
83
|
+
|
|
84
|
+
The commands above are entry points. The pack includes 25 skills total — 24 lifecycle skills plus the `using-agent-skills` meta-skill. Each skill is a structured workflow with steps, verification gates, and anti-rationalization tables. You can also reference any skill directly.
|
|
85
|
+
|
|
86
|
+
### Meta - Discover which skill applies
|
|
87
|
+
|
|
88
|
+
| Skill | What It Does | Use When |
|
|
89
|
+
|-------|-------------|----------|
|
|
90
|
+
| [using-agent-skills](skills/using-agent-skills/SKILL.md) | Maps incoming work to the right skill workflow and defines shared operating rules | Starting a session or deciding which skill applies |
|
|
91
|
+
|
|
92
|
+
### Define - Clarify what to build
|
|
93
|
+
|
|
94
|
+
| Skill | What It Does | Use When |
|
|
95
|
+
|-------|-------------|----------|
|
|
96
|
+
| [interview-me](skills/interview-me/SKILL.md) | One-question-at-a-time interview that extracts what the user actually wants instead of what they think they should want, until ~95% confidence | The ask is underspecified, or the user invokes "interview me" / "grill me" |
|
|
97
|
+
| [idea-refine](skills/idea-refine/SKILL.md) | Structured divergent/convergent thinking to turn vague ideas into concrete proposals | You have a rough concept that needs exploration |
|
|
98
|
+
| [spec-driven-development](skills/spec-driven-development/SKILL.md) | Write a PRD covering objectives, commands, structure, code style, testing, and boundaries before any code | Starting a new project, feature, or significant change |
|
|
99
|
+
| [constraint-driven-development](skills/constraint-driven-development/SKILL.md) | Interviews you for a quality bar with sane default thresholds, writes CONSTRAINTS.md, places each check by cost, and catches agents silencing checks or skipping tests to get green | No standards are written down, or an agent is producing more than anyone reads |
|
|
100
|
+
|
|
101
|
+
### Plan - Break it down
|
|
102
|
+
|
|
103
|
+
| Skill | What It Does | Use When |
|
|
104
|
+
|-------|-------------|----------|
|
|
105
|
+
| [planning-and-task-breakdown](skills/planning-and-task-breakdown/SKILL.md) | Decompose specs into small, verifiable tasks with acceptance criteria and dependency ordering | You have a spec and need implementable units |
|
|
106
|
+
|
|
107
|
+
### Build - Write the code
|
|
108
|
+
|
|
109
|
+
| Skill | What It Does | Use When |
|
|
110
|
+
|-------|-------------|----------|
|
|
111
|
+
| [incremental-implementation](skills/incremental-implementation/SKILL.md) | Thin vertical slices - implement, test, verify, commit. Feature flags, safe defaults, rollback-friendly changes | Any change touching more than one file |
|
|
112
|
+
| [test-driven-development](skills/test-driven-development/SKILL.md) | Red-Green-Refactor, test pyramid (80/15/5), test sizes, DAMP over DRY, Beyonce Rule, browser testing | Implementing logic, fixing bugs, or changing behavior |
|
|
113
|
+
| [context-engineering](skills/context-engineering/SKILL.md) | Feed agents the right information at the right time - rules files, context packing, MCP integrations | Starting a session, switching tasks, or when output quality drops |
|
|
114
|
+
| [source-driven-development](skills/source-driven-development/SKILL.md) | Ground every framework decision in official documentation - verify, cite sources, flag what's unverified | You want authoritative, source-cited code for any framework or library |
|
|
115
|
+
| [doubt-driven-development](skills/doubt-driven-development/SKILL.md) | Adversarial fresh-context review of every non-trivial decision in-flight - CLAIM → EXTRACT → DOUBT → RECONCILE → STOP, with optional user-authorized cross-model escalation | Stakes are high (production, security, irreversible), working in unfamiliar code, or a confident output is cheaper to verify now than to debug later |
|
|
116
|
+
| [frontend-ui-engineering](skills/frontend-ui-engineering/SKILL.md) | Component architecture, design systems, state management, responsive design, WCAG 2.1 AA accessibility | Building or modifying user-facing interfaces |
|
|
117
|
+
| [api-and-interface-design](skills/api-and-interface-design/SKILL.md) | Contract-first design, Hyrum's Law, One-Version Rule, error semantics, boundary validation | Designing APIs, module boundaries, or public interfaces |
|
|
118
|
+
|
|
119
|
+
### Verify - Prove it works
|
|
120
|
+
|
|
121
|
+
| Skill | What It Does | Use When |
|
|
122
|
+
|-------|-------------|----------|
|
|
123
|
+
| [browser-testing-with-devtools](skills/browser-testing-with-devtools/SKILL.md) | Chrome DevTools MCP for live runtime data - DOM inspection, console logs, network traces, performance profiling | Building or debugging anything that runs in a browser |
|
|
124
|
+
| [debugging-and-error-recovery](skills/debugging-and-error-recovery/SKILL.md) | Five-step triage: reproduce, localize, reduce, fix, guard. Stop-the-line rule, safe fallbacks | Tests fail, builds break, or behavior is unexpected |
|
|
125
|
+
|
|
126
|
+
### Review - Quality gates before merge
|
|
127
|
+
|
|
128
|
+
| Skill | What It Does | Use When |
|
|
129
|
+
|-------|-------------|----------|
|
|
130
|
+
| [code-review-and-quality](skills/code-review-and-quality/SKILL.md) | Five-axis review, change sizing (~100 lines), severity labels (Nit/Optional/FYI), review speed norms, splitting strategies | Before merging any change |
|
|
131
|
+
| [code-simplification](skills/code-simplification/SKILL.md) | Chesterton's Fence, Rule of 500, reduce complexity while preserving exact behavior | Code works but is harder to read or maintain than it should be |
|
|
132
|
+
| [security-and-hardening](skills/security-and-hardening/SKILL.md) | OWASP Top 10 prevention, auth patterns, secrets management, dependency auditing, three-tier boundary system | Handling user input, auth, data storage, or external integrations |
|
|
133
|
+
| [performance-optimization](skills/performance-optimization/SKILL.md) | Measure-first approach - Core Web Vitals targets, profiling workflows, bundle analysis, anti-pattern detection | Performance requirements exist or you suspect regressions |
|
|
134
|
+
|
|
135
|
+
### Ship - Deploy with confidence
|
|
136
|
+
|
|
137
|
+
| Skill | What It Does | Use When |
|
|
138
|
+
|-------|-------------|----------|
|
|
139
|
+
| [git-workflow-and-versioning](skills/git-workflow-and-versioning/SKILL.md) | Trunk-based development, atomic commits, change sizing (~100 lines), the commit-as-save-point pattern | Making any code change (always) |
|
|
140
|
+
| [ci-cd-and-automation](skills/ci-cd-and-automation/SKILL.md) | Shift Left, Faster is Safer, feature flags, quality gate pipelines, failure feedback loops | Setting up or modifying build and deploy pipelines |
|
|
141
|
+
| [deprecation-and-migration](skills/deprecation-and-migration/SKILL.md) | Code-as-liability mindset, compulsory vs advisory deprecation, migration patterns, zombie code removal | Removing old systems, migrating users, or sunsetting features |
|
|
142
|
+
| [documentation-and-adrs](skills/documentation-and-adrs/SKILL.md) | Architecture Decision Records, API docs, inline documentation standards - document the *why* | Making architectural decisions, changing APIs, or shipping features |
|
|
143
|
+
| [observability-and-instrumentation](skills/observability-and-instrumentation/SKILL.md) | Structured logging, RED metrics, OpenTelemetry tracing, symptom-based alerting - instrument as you build | Adding telemetry, or shipping anything that runs in production |
|
|
144
|
+
| [shipping-and-launch](skills/shipping-and-launch/SKILL.md) | Pre-launch checklists, feature flag lifecycle, staged rollouts, rollback procedures, monitoring setup | Preparing to deploy to production |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Personas and shared references
|
|
149
|
+
|
|
150
|
+
The four original personas remain in [agents/](agents/): code reviewer, security
|
|
151
|
+
auditor, test engineer, and web performance auditor. Shared checklists remain in [references/](references/).
|
|
152
|
+
Their relative layout is preserved across npm packaging and bundle extraction.
|
|
153
|
+
|
|
154
|
+
## Other hosts
|
|
155
|
+
|
|
156
|
+
The existing [host guides](docs/other-hosts.md) describe additional integrations.
|
|
157
|
+
Prepare the complete local bundle first and use its path in host-specific setup.
|
|
158
|
+
Per-skill installation is separate and may omit the shared references, command
|
|
159
|
+
wrappers, and personas.
|
|
160
|
+
|
|
161
|
+
## Development and release
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm run rebrand:check
|
|
165
|
+
npm run validate
|
|
166
|
+
npm test
|
|
167
|
+
node scripts/run-evals.js --min-rank1 95
|
|
168
|
+
npm pack --pack-destination /path/to/release-directory
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
[npx](https://docs.npmjs.com/cli/npm-exec/) runs the package executable;
|
|
172
|
+
`npm pack` builds a tarball and `npm publish` publishes it.
|
|
173
|
+
Local preparation does not establish registry publication or model behavior.
|
|
174
|
+
See [brand maintenance](rebrand/MAINTENANCE.md) for source/release separation.
|
|
175
|
+
|
|
176
|
+
## License
|
|
177
|
+
|
|
178
|
+
MIT. Original copyright and license are retained in [LICENSE](LICENSE).
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Using i3 Composer Agent with CodeBuddy
|
|
2
|
+
|
|
3
|
+
Prepare the complete plugin inside the project where you want to use it:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx @givolt/i3-composer-agent --codebuddy
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
In the CodeBuddy chat, register the prepared directory and install the plugin:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
/plugin marketplace add ./i3-composer-agent
|
|
13
|
+
/plugin install i3-composer-agent@i3-composer-agent
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Use the absolute directory printed by the CLI if CodeBuddy has a different
|
|
17
|
+
working directory. Choose the intended installation scope in CodeBuddy's native
|
|
18
|
+
plugin manager. Reload plugins or start a new session after installation.
|
|
19
|
+
|
|
20
|
+
CodeBuddy supports the existing `.claude-plugin/plugin.json` compatibility
|
|
21
|
+
manifest. It declares `.claude/commands/` and `commands/`, preserving the nine
|
|
22
|
+
original lifecycle commands and their workflow content.
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
/i3-composer-agent:spec
|
|
26
|
+
/i3-composer-agent:plan
|
|
27
|
+
/i3-composer-agent:build
|
|
28
|
+
/i3-composer-agent:build auto
|
|
29
|
+
/i3-composer-agent:review
|
|
30
|
+
/i3-composer-agent:ship
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Skill IDs, persona names, artifact paths, and workflow gates retain their
|
|
34
|
+
upstream behavior. The plugin namespace changes to `i3-composer-agent`.
|
|
35
|
+
|
|
36
|
+
The bundle includes all skills and shared `references/`. Installing individual
|
|
37
|
+
skills is a different distribution method and does not install the command
|
|
38
|
+
wrappers or persona definitions.
|
|
39
|
+
|
|
40
|
+
The CLI prepares files and prints registration commands. Actual host discovery
|
|
41
|
+
and model execution should be verified after registering the plugin.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Using i3 Composer Agent with Codex
|
|
2
|
+
|
|
3
|
+
Prepare the complete plugin inside the project where you want to use it:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx @givolt/i3-composer-agent --codex
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The CLI copies a persistent `./i3-composer-agent/` bundle and prints these
|
|
10
|
+
native registration commands. Run them to enable the plugin:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
codex plugin marketplace add ./i3-composer-agent
|
|
14
|
+
codex plugin add i3-composer-agent@i3-composer-agent
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Start a new Codex session after registration. All 25 existing skills keep their
|
|
18
|
+
original IDs. In CLI/IDE, use `/skills` or `$spec-driven-development`; in chat,
|
|
19
|
+
explicitly request the relevant skill from i3 Composer Agent.
|
|
20
|
+
|
|
21
|
+
The adapter in `.codex-plugin/plugin.json` points at the unchanged `skills/`
|
|
22
|
+
layout. Shared checklists remain under `references/`, so skill-relative links
|
|
23
|
+
resolve inside the complete plugin bundle.
|
|
24
|
+
|
|
25
|
+
The short lifecycle commands (`/spec`, `/plan`, `/build`, `/ship`) remain
|
|
26
|
+
available in hosts that load the Claude-compatible command manifest. Codex
|
|
27
|
+
lifecycle-command adaptation is separate from this brand conversion. Native
|
|
28
|
+
Codex `/plan` switches planning mode; it is not the plugin's planning wrapper.
|
|
29
|
+
|
|
30
|
+
Do not preload `using-agent-skills/SKILL.md` into always-on context: Codex routes
|
|
31
|
+
skills natively. The meta-skill can remain installed and explicitly invoked.
|
|
32
|
+
|
|
33
|
+
For local source testing, replace `./i3-composer-agent` above with the absolute
|
|
34
|
+
path to the branded checkout. The CLI does not modify existing plugin settings.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Accessibility Checklist
|
|
2
|
+
|
|
3
|
+
Quick reference for WCAG 2.1 AA compliance. Use alongside the `frontend-ui-engineering` skill.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Essential Checks](#essential-checks)
|
|
8
|
+
- [Common HTML Patterns](#common-html-patterns)
|
|
9
|
+
- [Testing Tools](#testing-tools)
|
|
10
|
+
- [Quick Reference: ARIA Live Regions](#quick-reference-aria-live-regions)
|
|
11
|
+
- [Common Anti-Patterns](#common-anti-patterns)
|
|
12
|
+
|
|
13
|
+
## Essential Checks
|
|
14
|
+
|
|
15
|
+
### Keyboard Navigation
|
|
16
|
+
- [ ] All interactive elements focusable via Tab key
|
|
17
|
+
- [ ] Focus order follows visual/logical order
|
|
18
|
+
- [ ] Focus is visible (outline/ring on focused elements)
|
|
19
|
+
- [ ] Custom widgets have keyboard support (Enter to activate, Escape to close)
|
|
20
|
+
- [ ] No keyboard traps (user can always Tab away from a component)
|
|
21
|
+
- [ ] Skip-to-content link at top of page - visible (at least) on keyboard focus
|
|
22
|
+
- [ ] Modals trap focus while open, return focus on close
|
|
23
|
+
|
|
24
|
+
### Screen Readers
|
|
25
|
+
- [ ] All images have `alt` text (or `alt=""` for decorative images)
|
|
26
|
+
- [ ] All form inputs have associated labels (`<label>` or `aria-label`)
|
|
27
|
+
- [ ] Buttons and links have descriptive text (not "Click here")
|
|
28
|
+
- [ ] Icon-only buttons have `aria-label`
|
|
29
|
+
- [ ] Page has one `<h1>` and headings don't skip levels
|
|
30
|
+
- [ ] Dynamic content changes announced (`aria-live` regions)
|
|
31
|
+
- [ ] Tables have `<th>` headers with scope
|
|
32
|
+
|
|
33
|
+
### Visual
|
|
34
|
+
- [ ] Text contrast ≥ 4.5:1 (normal text) or ≥ 3:1 (large text, 18px+)
|
|
35
|
+
- [ ] UI components contrast ≥ 3:1 against background
|
|
36
|
+
- [ ] Color is not the only way to convey information
|
|
37
|
+
- [ ] Text resizable to 200% without breaking layout
|
|
38
|
+
- [ ] No content that flashes more than 3 times per second
|
|
39
|
+
|
|
40
|
+
### Forms
|
|
41
|
+
- [ ] Every input has a visible label
|
|
42
|
+
- [ ] Required fields indicated (not by color alone)
|
|
43
|
+
- [ ] Error messages specific and associated with the field
|
|
44
|
+
- [ ] Error state visible by more than color (icon, text, border)
|
|
45
|
+
- [ ] Form submission errors summarized and focusable
|
|
46
|
+
- [ ] Known fields use autocomplete (for example `type="email" autocomplete="email"`)
|
|
47
|
+
|
|
48
|
+
### Content
|
|
49
|
+
- [ ] Language declared (`<html lang="en">`)
|
|
50
|
+
- [ ] Page has a descriptive `<title>`
|
|
51
|
+
- [ ] Links distinguish from surrounding text (not by color alone)
|
|
52
|
+
- [ ] Touch targets ≥ 44x44px on mobile
|
|
53
|
+
- [ ] Meaningful empty states (not blank screens)
|
|
54
|
+
|
|
55
|
+
## Common HTML Patterns
|
|
56
|
+
|
|
57
|
+
### Buttons vs. Links
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<!-- Use <button> for actions -->
|
|
61
|
+
<button onClick={handleDelete}>Delete Task</button>
|
|
62
|
+
|
|
63
|
+
<!-- Use <a> for navigation -->
|
|
64
|
+
<a href="/tasks/123">View Task</a>
|
|
65
|
+
|
|
66
|
+
<!-- NEVER use div/span as buttons -->
|
|
67
|
+
<div onClick={handleDelete}>Delete</div> <!-- BAD -->
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Form Labels
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<!-- Explicit label association -->
|
|
74
|
+
<label htmlFor="email">Email address</label>
|
|
75
|
+
<input id="email" type="email" required />
|
|
76
|
+
|
|
77
|
+
<!-- Implicit wrapping -->
|
|
78
|
+
<label>
|
|
79
|
+
Email address
|
|
80
|
+
<input type="email" required />
|
|
81
|
+
</label>
|
|
82
|
+
|
|
83
|
+
<!-- Hidden label (visible label preferred) -->
|
|
84
|
+
<input type="search" aria-label="Search tasks" />
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### ARIA Roles
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<!-- Navigation -->
|
|
91
|
+
<nav aria-label="Main navigation">...</nav>
|
|
92
|
+
<nav aria-label="Footer links">...</nav>
|
|
93
|
+
|
|
94
|
+
<!-- Status messages -->
|
|
95
|
+
<div role="status" aria-live="polite">Task saved</div>
|
|
96
|
+
|
|
97
|
+
<!-- Alert messages -->
|
|
98
|
+
<div role="alert">Error: Title is required</div>
|
|
99
|
+
|
|
100
|
+
<!-- Modal dialogs -->
|
|
101
|
+
<dialog aria-modal="true" aria-labelledby="dialog-title">
|
|
102
|
+
<h2 id="dialog-title">Confirm Delete</h2>
|
|
103
|
+
...
|
|
104
|
+
</dialog>
|
|
105
|
+
|
|
106
|
+
<!-- Loading states -->
|
|
107
|
+
<div aria-busy="true" aria-label="Loading tasks">
|
|
108
|
+
<Spinner />
|
|
109
|
+
</div>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Accessible Lists
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<ul role="list" aria-label="Tasks">
|
|
116
|
+
<li>
|
|
117
|
+
<input type="checkbox" id="task-1" aria-label="Complete: Buy groceries" />
|
|
118
|
+
<label htmlFor="task-1">Buy groceries</label>
|
|
119
|
+
</li>
|
|
120
|
+
</ul>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Testing Tools
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Automated audit
|
|
127
|
+
npx axe-core # Programmatic accessibility testing
|
|
128
|
+
npx pa11y # CLI accessibility checker
|
|
129
|
+
|
|
130
|
+
# In browser
|
|
131
|
+
# Chrome DevTools → Lighthouse → Accessibility
|
|
132
|
+
# Chrome DevTools → Elements → Accessibility tree
|
|
133
|
+
|
|
134
|
+
# Screen reader testing
|
|
135
|
+
# macOS: VoiceOver (Cmd + F5)
|
|
136
|
+
# Windows: NVDA (free) or JAWS
|
|
137
|
+
# Linux: Orca
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Quick Reference: ARIA Live Regions
|
|
141
|
+
|
|
142
|
+
| Value | Behavior | Use For |
|
|
143
|
+
|-------|----------|---------|
|
|
144
|
+
| `aria-live="polite"` | Announced at next pause | Status updates, saved confirmations |
|
|
145
|
+
| `aria-live="assertive"` | Announced immediately | Errors, time-sensitive alerts |
|
|
146
|
+
| `role="status"` | Same as `polite` | Status messages |
|
|
147
|
+
| `role="alert"` | Same as `assertive` | Error messages |
|
|
148
|
+
|
|
149
|
+
## Common Anti-Patterns
|
|
150
|
+
|
|
151
|
+
| Anti-Pattern | Problem | Fix |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| `div` as button | Not focusable, no keyboard support | Use `<button>` |
|
|
154
|
+
| Missing `alt` text | Images invisible to screen readers | Add descriptive `alt` |
|
|
155
|
+
| Color-only states | Invisible to color-blind users | Add icons, text, or patterns |
|
|
156
|
+
| Autoplaying media | Disorienting, can't be stopped | Add controls, don't autoplay |
|
|
157
|
+
| Custom dropdown with no ARIA | Unusable by keyboard/screen reader | Use native `<select>` or proper ARIA listbox |
|
|
158
|
+
| Removing focus outlines | Users can't see where they are | Style outlines, don't remove them |
|
|
159
|
+
| Empty links/buttons | "Link" announced with no description | Add text or `aria-label` |
|
|
160
|
+
| `tabindex > 0` | Breaks natural tab order | Use `tabindex="0"` or `-1` only |
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Definition of Done
|
|
2
|
+
|
|
3
|
+
A standing, project-wide bar that every change must clear before it counts as done. Unlike acceptance criteria, which vary per task and answer "did we build the right thing?", the Definition of Done is the same every time and answers "is this finished to our standard?". Use it as the final gate in `planning-and-task-breakdown`, `incremental-implementation`, and `shipping-and-launch`.
|
|
4
|
+
|
|
5
|
+
## Definition of Done vs. Acceptance Criteria
|
|
6
|
+
|
|
7
|
+
| | Acceptance Criteria | Definition of Done |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| Scope | Specific to one task or spec | Applies to every increment |
|
|
10
|
+
| Changes | Different for each item | Fixed and reused |
|
|
11
|
+
| Answers | "Did we build *this thing*?" | "Is it *ready*?" |
|
|
12
|
+
| Owner | Defined when planning the task | Defined once for the project |
|
|
13
|
+
| Example | "User can reset password via email link" | "Tests pass, no regressions, docs updated" |
|
|
14
|
+
|
|
15
|
+
The two are complementary. A task is done only when **its** acceptance criteria are met **and** the standing Definition of Done is satisfied. Skipping either leaves work that looks finished but is not.
|
|
16
|
+
|
|
17
|
+
## The Standing Checklist
|
|
18
|
+
|
|
19
|
+
Apply this to every change before declaring it done.
|
|
20
|
+
|
|
21
|
+
### Correctness
|
|
22
|
+
- [ ] All acceptance criteria for the task are met
|
|
23
|
+
- [ ] Code runs and behaves as intended, verified at runtime, not just compiled or typechecked
|
|
24
|
+
- [ ] New behavior is covered by tests that fail without the change and pass with it
|
|
25
|
+
- [ ] Existing tests still pass; no regressions introduced
|
|
26
|
+
- [ ] Edge cases and error paths are handled, not just the happy path
|
|
27
|
+
|
|
28
|
+
### Quality
|
|
29
|
+
- [ ] Code reveals intent through naming and structure; no comments needed to explain *what* it does
|
|
30
|
+
- [ ] No duplicated business logic
|
|
31
|
+
- [ ] No dead code, debug output, or commented-out blocks left behind
|
|
32
|
+
- [ ] Changes are scoped to the task; no unrelated refactors snuck in
|
|
33
|
+
- [ ] Linting and formatting pass
|
|
34
|
+
|
|
35
|
+
The depth behind these items lives in `code-review-and-quality` (the five-axis review) and `code-simplification` (reducing complexity without changing behavior).
|
|
36
|
+
|
|
37
|
+
### Integration
|
|
38
|
+
- [ ] Change works with the rest of the system, not just in isolation
|
|
39
|
+
- [ ] Database migrations, config changes, and feature flags are accounted for
|
|
40
|
+
- [ ] Backward compatibility considered for any public interface or API change
|
|
41
|
+
|
|
42
|
+
### Documentation
|
|
43
|
+
- [ ] Public interfaces, APIs, and user-facing behavior are documented
|
|
44
|
+
- [ ] Architectural decisions worth preserving are recorded (see `documentation-and-adrs`)
|
|
45
|
+
- [ ] Documentation describes the current state in timeless language, not the change history
|
|
46
|
+
|
|
47
|
+
### Ship-readiness
|
|
48
|
+
- [ ] Security implications reviewed for any untrusted input, auth, or data handling (see `security-and-hardening`)
|
|
49
|
+
- [ ] Observability in place for new critical paths (logs, metrics, traces) (see `observability-and-instrumentation`)
|
|
50
|
+
- [ ] Rollback path exists for anything risky (see `shipping-and-launch`)
|
|
51
|
+
- [ ] The human has reviewed and approved before merge or deploy
|
|
52
|
+
|
|
53
|
+
## How to Apply
|
|
54
|
+
|
|
55
|
+
- **Per task**: confirm the Correctness and Quality sections before checking the task off.
|
|
56
|
+
- **Per feature**: confirm Integration and Documentation before considering the feature complete.
|
|
57
|
+
- **Per release**: the full checklist is the floor; `shipping-and-launch` adds the deploy-specific gates on top.
|
|
58
|
+
|
|
59
|
+
Tailor the list to the project once, then reuse it unchanged. A Definition of Done that is renegotiated every sprint is not a Definition of Done.
|
|
60
|
+
|
|
61
|
+
## Red Flags
|
|
62
|
+
|
|
63
|
+
- "It's done, I just haven't run it yet": unverified work is not done.
|
|
64
|
+
- "Tests pass" used as a synonym for done while docs, regressions, or runtime verification are skipped.
|
|
65
|
+
- A different bar applied depending on deadline pressure.
|
|
66
|
+
- Acceptance criteria treated as the whole bar, with no standing quality floor.
|
|
67
|
+
- "Done" declared before human review on changes that need it.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Observability Checklist
|
|
2
|
+
|
|
3
|
+
Quick reference for instrumenting production code. Use alongside the `observability-and-instrumentation` skill.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [On-Call Questions (Start Here)](#on-call-questions-start-here)
|
|
8
|
+
- [Structured Logging](#structured-logging)
|
|
9
|
+
- [Metrics](#metrics)
|
|
10
|
+
- [Distributed Tracing](#distributed-tracing)
|
|
11
|
+
- [Alerting](#alerting)
|
|
12
|
+
- [Dashboards](#dashboards)
|
|
13
|
+
- [Verify the Telemetry](#verify-the-telemetry)
|
|
14
|
+
- [Pre-Launch Gate](#pre-launch-gate)
|
|
15
|
+
|
|
16
|
+
## On-Call Questions (Start Here)
|
|
17
|
+
|
|
18
|
+
Telemetry without a question is noise. Before instrumenting anything:
|
|
19
|
+
|
|
20
|
+
- [ ] 2–4 questions an on-call engineer will ask about this feature are written down
|
|
21
|
+
- [ ] Every signal below maps to one of those questions
|
|
22
|
+
- [ ] Each question is matched to the right signal type: metrics say **that** something is wrong, traces say **where**, logs say **why**
|
|
23
|
+
|
|
24
|
+
## Structured Logging
|
|
25
|
+
|
|
26
|
+
- [ ] Logs are structured (JSON) with stable event names — not free-form strings
|
|
27
|
+
- [ ] Every log line carries a correlation/request ID, generated or accepted at the system boundary
|
|
28
|
+
- [ ] Correlation ID is propagated on every outbound call and async boundary (HTTP headers, queue metadata)
|
|
29
|
+
- [ ] Any log stream written by more than one entry point (scheduler, replay endpoint, manual run) carries an entry-point field, set where the run starts and propagated alongside the correlation ID
|
|
30
|
+
- [ ] Log levels are consistent: `error` = invariant broken, someone may act; `warn` = degraded but handled; `info` = significant business event; `debug` = off in production
|
|
31
|
+
- [ ] No secrets, tokens, passwords, or unredacted PII in any log line (hard rule from `security-and-hardening`)
|
|
32
|
+
- [ ] Fields are allowlisted — no whole request/response bodies, no auth headers
|
|
33
|
+
- [ ] External service calls logged with metadata only: endpoint, status, latency, attempt count, sanitized identifiers
|
|
34
|
+
- [ ] Actual log output spot-checked: structured fields, not `[object Object]`
|
|
35
|
+
|
|
36
|
+
## Metrics
|
|
37
|
+
|
|
38
|
+
- [ ] **RED** instrumented for every endpoint and every external dependency: Rate, Errors, Duration
|
|
39
|
+
- [ ] **USE** instrumented for every resource (queues, pools, hosts): Utilization, Saturation, Errors
|
|
40
|
+
- [ ] Latency is a histogram; p50/p95/p99 queryable — never an average
|
|
41
|
+
- [ ] All labels come from small, fixed sets (route template, status class, provider name)
|
|
42
|
+
- [ ] No unbounded label values: no user IDs, tenant IDs, emails, raw URLs, request IDs, or error message text
|
|
43
|
+
- [ ] Status codes grouped by class (`5xx`, not `503`)
|
|
44
|
+
- [ ] Queue depth and processing duration tracked for every worker/queue
|
|
45
|
+
|
|
46
|
+
## Distributed Tracing
|
|
47
|
+
|
|
48
|
+
- [ ] OpenTelemetry (or equivalent) initialized at service startup, before other imports
|
|
49
|
+
- [ ] Auto-instrumentation enabled for HTTP, gRPC, and DB clients
|
|
50
|
+
- [ ] Trace context propagated on every outbound call (W3C `traceparent`/`tracestate`) and extracted from every inbound request
|
|
51
|
+
- [ ] Context survives async boundaries — queue messages carry trace metadata
|
|
52
|
+
- [ ] Manual spans only around meaningful internal units of work, with the attributes on-call will filter by
|
|
53
|
+
- [ ] No secrets or PII as span attributes
|
|
54
|
+
- [ ] Head-based sampling at a low default rate; 100% of errors kept if tail sampling is available
|
|
55
|
+
|
|
56
|
+
## Alerting
|
|
57
|
+
|
|
58
|
+
- [ ] Every alert is symptom-based (error rate, p99 latency, queue age) — causes (CPU, disk, restarts) go to dashboards, not pagers
|
|
59
|
+
- [ ] Every alert is actionable; "ignore it, it self-heals" alerts are deleted
|
|
60
|
+
- [ ] Every alert links to a runbook — minimum three lines: what it means, first query to run, escalation path
|
|
61
|
+
- [ ] Thresholds and durations justified by an SLO or historical data, not guesses
|
|
62
|
+
- [ ] Two severities only: **page** (user-facing, act now) and **ticket** (degradation, act this week)
|
|
63
|
+
- [ ] Each new alert test-fired once: it reached the right channel and the runbook link works
|
|
64
|
+
- [ ] No alerts that fire daily and get acknowledged without action
|
|
65
|
+
|
|
66
|
+
## Dashboards
|
|
67
|
+
|
|
68
|
+
- [ ] Service health dashboard exists: error rate, latency p99, traffic, saturation
|
|
69
|
+
- [ ] Dependency health panel shows per-service error rates and latency
|
|
70
|
+
- [ ] Dashboard answers the on-call questions from the top of this checklist — not "everything except the answer"
|
|
71
|
+
- [ ] Default time range is sensible (1h–6h, not 30d)
|
|
72
|
+
|
|
73
|
+
## Verify the Telemetry
|
|
74
|
+
|
|
75
|
+
Instrumentation is code; it can be wrong:
|
|
76
|
+
|
|
77
|
+
- [ ] Forced an error in staging → found it in the logs by correlation ID
|
|
78
|
+
- [ ] Sent test traffic → metric series appear with expected labels and sane values
|
|
79
|
+
- [ ] Followed one request end-to-end in the tracing UI → no broken spans
|
|
80
|
+
- [ ] An induced failure was diagnosed from telemetry alone, without reading the source
|
|
81
|
+
|
|
82
|
+
## Pre-Launch Gate
|
|
83
|
+
|
|
84
|
+
Before a feature ships to production, all of the following are true:
|
|
85
|
+
|
|
86
|
+
- [ ] Structured logs flowing to the log aggregator
|
|
87
|
+
- [ ] RED metrics visible in dashboards for every new endpoint and dependency
|
|
88
|
+
- [ ] At least one symptom-based alert configured, with runbook, test-fired
|
|
89
|
+
- [ ] A request can be traced across every service it touches
|
|
90
|
+
- [ ] On-call knows where the runbooks are
|
|
91
|
+
|
|
92
|
+
For launch-day monitoring sequence and rollback triggers, see the `shipping-and-launch` skill.
|