hatch3r 1.7.1 → 1.8.0
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/README.md +38 -12
- package/agents/hatch3r-a11y-auditor.md +4 -0
- package/agents/hatch3r-architect.md +4 -0
- package/agents/hatch3r-ci-watcher.md +4 -0
- package/agents/hatch3r-context-rules.md +26 -6
- package/agents/hatch3r-creator.md +6 -1
- package/agents/hatch3r-dependency-auditor.md +4 -0
- package/agents/hatch3r-devops.md +4 -0
- package/agents/hatch3r-docs-writer.md +4 -0
- package/agents/hatch3r-fixer.md +4 -0
- package/agents/hatch3r-handoff-loader.md +243 -0
- package/agents/hatch3r-handoff-preparer.md +134 -0
- package/agents/hatch3r-implementer.md +12 -0
- package/agents/hatch3r-learnings-loader.md +5 -1
- package/agents/hatch3r-lint-fixer.md +4 -0
- package/agents/hatch3r-perf-profiler.md +8 -0
- package/agents/hatch3r-researcher.md +4 -0
- package/agents/hatch3r-reviewer.md +94 -0
- package/agents/hatch3r-security-auditor.md +24 -0
- package/agents/hatch3r-test-writer.md +4 -0
- package/agents/modes/requirements-elicitation.md +4 -1
- package/agents/modes/similar-implementation.md +6 -0
- package/agents/modes/user-flows.md +76 -0
- package/agents/shared/quality-charter.md +128 -0
- package/agents/shared/user-content-templates.md +31 -1
- package/commands/hatch3r-agent-customize.md +4 -0
- package/commands/hatch3r-api-spec.md +7 -0
- package/commands/hatch3r-benchmark.md +7 -0
- package/commands/hatch3r-board-fill.md +8 -0
- package/commands/hatch3r-board-groom.md +4 -0
- package/commands/hatch3r-board-init.md +51 -0
- package/commands/hatch3r-board-pickup.md +8 -0
- package/commands/hatch3r-board-refresh.md +4 -0
- package/commands/hatch3r-board-shared.md +6 -6
- package/commands/hatch3r-bug-plan.md +7 -0
- package/commands/hatch3r-codebase-map.md +8 -0
- package/commands/hatch3r-command-customize.md +4 -0
- package/commands/hatch3r-context-health.md +5 -0
- package/commands/hatch3r-create.md +59 -4
- package/commands/hatch3r-debug.md +7 -0
- package/commands/hatch3r-dep-audit.md +4 -0
- package/commands/hatch3r-feature-plan.md +7 -0
- package/commands/hatch3r-handoff.md +133 -0
- package/commands/hatch3r-healthcheck.md +4 -0
- package/commands/hatch3r-hooks.md +4 -0
- package/commands/hatch3r-learn.md +16 -0
- package/commands/hatch3r-migration-plan.md +7 -0
- package/commands/hatch3r-onboard.md +7 -0
- package/commands/hatch3r-pr-resolve.md +12 -1
- package/commands/hatch3r-project-spec.md +8 -0
- package/commands/hatch3r-quick-change.md +11 -2
- package/commands/hatch3r-recipe.md +4 -0
- package/commands/hatch3r-refactor-plan.md +7 -0
- package/commands/hatch3r-release.md +5 -0
- package/commands/hatch3r-revision.md +7 -0
- package/commands/hatch3r-roadmap.md +8 -0
- package/commands/hatch3r-rule-customize.md +4 -0
- package/commands/hatch3r-security-audit.md +4 -0
- package/commands/hatch3r-skill-customize.md +4 -0
- package/commands/hatch3r-test-plan.md +7 -0
- package/commands/hatch3r-workflow.md +11 -1
- package/dist/cli/index.js +4814 -1130
- package/dist/cli/index.js.map +1 -1
- package/package.json +10 -5
- package/rules/hatch3r-accessibility-standards.md +21 -0
- package/rules/hatch3r-accessibility-standards.mdc +21 -0
- package/rules/hatch3r-agent-orchestration-detail.md +3 -0
- package/rules/hatch3r-agent-orchestration-detail.mdc +3 -0
- package/rules/hatch3r-agent-orchestration.md +34 -3
- package/rules/hatch3r-agent-orchestration.mdc +34 -3
- package/rules/hatch3r-ai-evals.md +158 -0
- package/rules/hatch3r-ai-evals.mdc +154 -0
- package/rules/hatch3r-ai-ux-patterns.md +131 -0
- package/rules/hatch3r-ai-ux-patterns.mdc +127 -0
- package/rules/hatch3r-api-design.md +67 -9
- package/rules/hatch3r-api-design.mdc +67 -9
- package/rules/hatch3r-api-versioning.md +119 -0
- package/rules/hatch3r-api-versioning.mdc +115 -0
- package/rules/hatch3r-auth-patterns.md +170 -0
- package/rules/hatch3r-auth-patterns.mdc +166 -0
- package/rules/hatch3r-component-conventions.md +30 -0
- package/rules/hatch3r-component-conventions.mdc +30 -0
- package/rules/hatch3r-container-hardening.md +131 -0
- package/rules/hatch3r-container-hardening.mdc +127 -0
- package/rules/hatch3r-contract-testing.md +117 -0
- package/rules/hatch3r-contract-testing.mdc +113 -0
- package/rules/hatch3r-deep-context.md +2 -0
- package/rules/hatch3r-deep-context.mdc +2 -0
- package/rules/hatch3r-dependency-management.md +73 -1
- package/rules/hatch3r-dependency-management.mdc +72 -0
- package/rules/hatch3r-design-system-detection.md +142 -0
- package/rules/hatch3r-design-system-detection.mdc +138 -0
- package/rules/hatch3r-event-schema-evolution.md +90 -0
- package/rules/hatch3r-event-schema-evolution.mdc +86 -0
- package/rules/hatch3r-handoff-readiness.md +45 -0
- package/rules/hatch3r-handoff-readiness.mdc +40 -0
- package/rules/hatch3r-i18n.md +13 -0
- package/rules/hatch3r-i18n.mdc +13 -0
- package/rules/hatch3r-iteration-summary.md +2 -0
- package/rules/hatch3r-iteration-summary.mdc +2 -0
- package/rules/hatch3r-migrations.md +61 -16
- package/rules/hatch3r-migrations.mdc +61 -16
- package/rules/hatch3r-observability-logging.md +1 -1
- package/rules/hatch3r-observability-logging.mdc +1 -1
- package/rules/hatch3r-observability-metrics.md +1 -1
- package/rules/hatch3r-observability-metrics.mdc +1 -1
- package/rules/hatch3r-observability-tracing-detail.md +8 -149
- package/rules/hatch3r-observability-tracing-detail.mdc +7 -149
- package/rules/hatch3r-observability-tracing.md +154 -6
- package/rules/hatch3r-observability-tracing.mdc +154 -6
- package/rules/hatch3r-observability.md +1 -0
- package/rules/hatch3r-observability.mdc +1 -0
- package/rules/hatch3r-operability.md +149 -0
- package/rules/hatch3r-operability.mdc +145 -0
- package/rules/hatch3r-passkey-server.md +181 -0
- package/rules/hatch3r-passkey-server.mdc +177 -0
- package/rules/hatch3r-progressive-delivery.md +120 -0
- package/rules/hatch3r-progressive-delivery.mdc +116 -0
- package/rules/hatch3r-resilience-patterns.md +154 -0
- package/rules/hatch3r-resilience-patterns.mdc +150 -0
- package/rules/hatch3r-secrets-management.md +29 -0
- package/rules/hatch3r-secrets-management.mdc +29 -0
- package/rules/hatch3r-testing.md +139 -43
- package/rules/hatch3r-testing.mdc +139 -43
- package/rules/hatch3r-ux-states-and-flows.md +149 -0
- package/rules/hatch3r-ux-states-and-flows.mdc +145 -0
- package/skills/hatch3r-a11y-audit/SKILL.md +14 -0
- package/skills/hatch3r-agent-customize/SKILL.md +10 -0
- package/skills/hatch3r-ai-feature/SKILL.md +136 -0
- package/skills/hatch3r-api-spec/SKILL.md +73 -0
- package/skills/hatch3r-architecture-review/SKILL.md +14 -0
- package/skills/hatch3r-bug-fix/SKILL.md +5 -0
- package/skills/hatch3r-ci-pipeline/SKILL.md +14 -0
- package/skills/hatch3r-cli-aichat/SKILL.md +84 -0
- package/skills/hatch3r-cli-ast-grep/SKILL.md +85 -0
- package/skills/hatch3r-cli-az-devops/SKILL.md +89 -0
- package/skills/hatch3r-cli-bat/SKILL.md +85 -0
- package/skills/hatch3r-cli-comby/SKILL.md +85 -0
- package/skills/hatch3r-cli-csvkit/SKILL.md +84 -0
- package/skills/hatch3r-cli-delta/SKILL.md +86 -0
- package/skills/hatch3r-cli-difftastic/SKILL.md +84 -0
- package/skills/hatch3r-cli-docker/SKILL.md +89 -0
- package/skills/hatch3r-cli-duckdb/SKILL.md +84 -0
- package/skills/hatch3r-cli-fd/SKILL.md +85 -0
- package/skills/hatch3r-cli-fzf/SKILL.md +84 -0
- package/skills/hatch3r-cli-gh/SKILL.md +90 -0
- package/skills/hatch3r-cli-glab/SKILL.md +89 -0
- package/skills/hatch3r-cli-jq/SKILL.md +89 -0
- package/skills/hatch3r-cli-lazygit/SKILL.md +78 -0
- package/skills/hatch3r-cli-llm/SKILL.md +84 -0
- package/skills/hatch3r-cli-miller/SKILL.md +84 -0
- package/skills/hatch3r-cli-mods/SKILL.md +84 -0
- package/skills/hatch3r-cli-overview/SKILL.md +60 -0
- package/skills/hatch3r-cli-playwright/SKILL.md +89 -0
- package/skills/hatch3r-cli-podman/SKILL.md +84 -0
- package/skills/hatch3r-cli-qsv/SKILL.md +91 -0
- package/skills/hatch3r-cli-ripgrep/SKILL.md +85 -0
- package/skills/hatch3r-cli-rtk/SKILL.md +91 -0
- package/skills/hatch3r-cli-sd/SKILL.md +85 -0
- package/skills/hatch3r-cli-stagehand/SKILL.md +111 -0
- package/skills/hatch3r-cli-taplo/SKILL.md +84 -0
- package/skills/hatch3r-cli-yq/SKILL.md +85 -0
- package/skills/hatch3r-cli-zstd/SKILL.md +85 -0
- package/skills/hatch3r-command-customize/SKILL.md +10 -0
- package/skills/hatch3r-context-health/SKILL.md +14 -0
- package/skills/hatch3r-cost-tracking/SKILL.md +14 -0
- package/skills/hatch3r-customize/SKILL.md +17 -0
- package/skills/hatch3r-dep-audit/SKILL.md +14 -0
- package/skills/hatch3r-design-system-detect/SKILL.md +164 -0
- package/skills/hatch3r-feature/SKILL.md +2 -0
- package/skills/hatch3r-gh-agentic-workflows/SKILL.md +13 -0
- package/skills/hatch3r-handoff-prepare/SKILL.md +160 -0
- package/skills/hatch3r-handoff-resume/SKILL.md +171 -0
- package/skills/hatch3r-incident-response/SKILL.md +14 -0
- package/skills/hatch3r-issue-workflow/SKILL.md +5 -0
- package/skills/hatch3r-logical-refactor/SKILL.md +14 -0
- package/skills/hatch3r-migration/SKILL.md +14 -0
- package/skills/hatch3r-observability-verify/SKILL.md +134 -0
- package/skills/hatch3r-perf-audit/SKILL.md +14 -0
- package/skills/hatch3r-pr-creation/SKILL.md +14 -0
- package/skills/hatch3r-qa-validation/SKILL.md +18 -0
- package/skills/hatch3r-recipe/SKILL.md +14 -0
- package/skills/hatch3r-refactor/SKILL.md +14 -0
- package/skills/hatch3r-release/SKILL.md +14 -0
- package/skills/hatch3r-reliability-verify/SKILL.md +146 -0
- package/skills/hatch3r-rule-customize/SKILL.md +10 -0
- package/skills/hatch3r-skill-customize/SKILL.md +10 -0
- package/skills/hatch3r-ui-ux-verify/SKILL.md +138 -0
- package/skills/hatch3r-visual-refactor/SKILL.md +15 -1
|
@@ -16,12 +16,26 @@ cache_friendly: true
|
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
Task Progress:
|
|
19
|
+
- [ ] Step 0: Detect ambiguity (P8 B1)
|
|
19
20
|
- [ ] Step 1: Verify branch naming
|
|
20
21
|
- [ ] Step 2: Self-review against checklist
|
|
21
22
|
- [ ] Step 3: Fill PR/MR template
|
|
22
23
|
- [ ] Step 4: Create the PR/MR
|
|
23
24
|
```
|
|
24
25
|
|
|
26
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
27
|
+
|
|
28
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: target base branch (`board.defaultBranch` vs feature branch), draft vs ready-for-review, reviewers explicitly named, rollout plan (feature flag vs direct), and whether the diff includes irreversible operations (force-push, data migration).
|
|
29
|
+
|
|
30
|
+
## Fan-out Discipline (P8 B2)
|
|
31
|
+
|
|
32
|
+
This skill delegates per task size:
|
|
33
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
34
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
35
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
36
|
+
|
|
37
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
38
|
+
|
|
25
39
|
## Step 1: Branch Naming
|
|
26
40
|
|
|
27
41
|
Branches must follow `{type}/{short-description}`:
|
|
@@ -12,6 +12,7 @@ cache_friendly: true
|
|
|
12
12
|
|
|
13
13
|
```
|
|
14
14
|
Task Progress:
|
|
15
|
+
- [ ] Step 0: Detect ambiguity (P8 B1)
|
|
15
16
|
- [ ] Step 1: Read the issue and relevant specs
|
|
16
17
|
- [ ] Step 2: Produce a validation plan
|
|
17
18
|
- [ ] Step 3: Execute all test cases
|
|
@@ -19,6 +20,19 @@ Task Progress:
|
|
|
19
20
|
- [ ] Step 5: File follow-up issues
|
|
20
21
|
```
|
|
21
22
|
|
|
23
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
24
|
+
|
|
25
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. This upgrades validation from exception-driven to default-driven. Triggers for THIS skill: validation scope (single feature vs release), target environment (staging vs prod), pass/fail thresholds, flaky-test policy (retry vs quarantine), and ship/hold authority (auto-block vs surface for review).
|
|
26
|
+
|
|
27
|
+
## Fan-out Discipline (P8 B2)
|
|
28
|
+
|
|
29
|
+
This skill delegates per task size:
|
|
30
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
31
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
32
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
33
|
+
|
|
34
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
35
|
+
|
|
22
36
|
## Step 1: Read Inputs
|
|
23
37
|
|
|
24
38
|
- Parse the issue body: validation scope, test matrix, environments, preconditions, pass/fail criteria, evidence requirements.
|
|
@@ -61,6 +75,10 @@ For non-UI test cases (API, data integrity, background jobs), use appropriate no
|
|
|
61
75
|
|
|
62
76
|
Do NOT fix bugs during validation. Document and file issues.
|
|
63
77
|
|
|
78
|
+
### 3c. UI/UX Verification Gate
|
|
79
|
+
|
|
80
|
+
For any feature that ships UI, the UI/UX verification gate is **`hatch3r-ui-ux-verify`** (`skills/hatch3r-ui-ux-verify/SKILL.md`). All 9 gates in that skill must pass before declaring the feature done. QA validation alone (browser tests, screenshot evidence) does not constitute UI/UX done. Run `hatch3r-ui-ux-verify` before this report's SHIP recommendation and include its verdict in the report.
|
|
81
|
+
|
|
64
82
|
## Step 4: Validation Report
|
|
65
83
|
|
|
66
84
|
Produce a structured report with:
|
|
@@ -12,6 +12,7 @@ cache_friendly: true
|
|
|
12
12
|
|
|
13
13
|
```
|
|
14
14
|
Task Progress:
|
|
15
|
+
- [ ] Step 0: Detect ambiguity (P8 B1)
|
|
15
16
|
- [ ] Step 1: Identify the workflow to capture as a recipe
|
|
16
17
|
- [ ] Step 2: Design the step sequence and dependency graph
|
|
17
18
|
- [ ] Step 3: Write the recipe YAML
|
|
@@ -19,6 +20,19 @@ Task Progress:
|
|
|
19
20
|
- [ ] Step 5: Validate with a real execution
|
|
20
21
|
```
|
|
21
22
|
|
|
23
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
24
|
+
|
|
25
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: recipe scope (single project vs shared), required variables and defaults, checkpoint policy (pause vs flow), error handling (resume vs restart), and target file location (`.hatch3r/recipes/` project vs global).
|
|
26
|
+
|
|
27
|
+
## Fan-out Discipline (P8 B2)
|
|
28
|
+
|
|
29
|
+
This skill delegates per task size:
|
|
30
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
31
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
32
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
33
|
+
|
|
34
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
35
|
+
|
|
22
36
|
## Step 1: Identify Workflow
|
|
23
37
|
|
|
24
38
|
Determine the repeatable workflow pattern:
|
|
@@ -14,6 +14,7 @@ cache_friendly: true
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
Task Progress:
|
|
17
|
+
- [ ] Step 0: Detect ambiguity (P8 B1)
|
|
17
18
|
- [ ] Step 1: Read the issue, specs, and existing tests
|
|
18
19
|
- [ ] Step 2: Produce a refactor plan
|
|
19
20
|
- [ ] Step 3: Implement with behavioral preservation
|
|
@@ -21,6 +22,19 @@ Task Progress:
|
|
|
21
22
|
- [ ] Step 5: Open PR
|
|
22
23
|
```
|
|
23
24
|
|
|
25
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
26
|
+
|
|
27
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: refactor scope (one module vs cross-cutting), behavioral invariants to preserve, public API surface (preserved vs changed), test rewrite policy (preserve vs replace), and acceptable performance delta.
|
|
28
|
+
|
|
29
|
+
## Fan-out Discipline (P8 B2)
|
|
30
|
+
|
|
31
|
+
This skill delegates per task size:
|
|
32
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
33
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
34
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
35
|
+
|
|
36
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
37
|
+
|
|
24
38
|
## Step 1: Read Inputs
|
|
25
39
|
|
|
26
40
|
- Parse the issue body: motivation, proposed change, affected files, safety plan, risk analysis, acceptance criteria.
|
|
@@ -14,6 +14,7 @@ cache_friendly: true
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
Task Progress:
|
|
17
|
+
- [ ] Step 0: Detect ambiguity (P8 B1)
|
|
17
18
|
- [ ] Step 1: Determine version bump (major/minor/patch) based on changes
|
|
18
19
|
- [ ] Step 2: Generate changelog from merged PRs and commit history
|
|
19
20
|
- [ ] Step 3: Update version in package.json and any other version references
|
|
@@ -23,6 +24,19 @@ Task Progress:
|
|
|
23
24
|
- [ ] Step 7: Monitor post-deploy for errors/regressions
|
|
24
25
|
```
|
|
25
26
|
|
|
27
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
28
|
+
|
|
29
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: bump level (major vs minor vs patch), deploy authority (cut-only vs deploy-and-monitor), staging gate (required vs skipped), rollback policy (auto vs manual), and irreversible tag/publish operations (npm publish, GitHub release).
|
|
30
|
+
|
|
31
|
+
## Fan-out Discipline (P8 B2)
|
|
32
|
+
|
|
33
|
+
This skill delegates per task size:
|
|
34
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
35
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
36
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
37
|
+
|
|
38
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
39
|
+
|
|
26
40
|
## Step 1: Determine Version Bump
|
|
27
41
|
|
|
28
42
|
- Review changes since last release: merged PRs/MRs, commit history.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-reliability-verify
|
|
3
|
+
type: skill
|
|
4
|
+
description: Reliability verification gate before declaring an agent-produced service done — SLO defined, kill switch, timeouts, retries, probes, runbook, staged rollout
|
|
5
|
+
tags: [review, devops]
|
|
6
|
+
quality_charter: agents/shared/quality-charter.md
|
|
7
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
8
|
+
cache_friendly: true
|
|
9
|
+
---
|
|
10
|
+
# Reliability Verification Gate
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
This skill defines what "done" means for any feature shipping a service to production. Run before declaring a feature complete. The 9 gates below are machine-checkable on the manifest, the source, and the alert configuration. Skipping any gate = the feature is not done. Functional tests passing alone do not satisfy this bar — a service that lacks an SLO, a kill switch, or a runbook will fail in production before its first alert reaches the on-call.
|
|
15
|
+
|
|
16
|
+
Inputs the skill expects:
|
|
17
|
+
|
|
18
|
+
- A service repository with `src/` and `k8s/` (or equivalent manifest path).
|
|
19
|
+
- A `docs/runbooks/` directory.
|
|
20
|
+
- Either a `slo/` directory or inline SLO definitions in the alert manifest (Prometheus rules, Datadog monitors, OpenSLO YAML).
|
|
21
|
+
|
|
22
|
+
Outputs the skill produces: a 9-line verdict block written to the PR conversation, plus a JSON artifact at `.audit-workspace/reliability-verify-<sha>.json` for downstream consumption by `hatch3r-release` (or any downstream release-prep skill).
|
|
23
|
+
|
|
24
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
25
|
+
|
|
26
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: service scope, SLO target values and window, rollout strategy (canary stages, hold durations), kill-switch authority and provider, and blast-radius rollback drill cadence.
|
|
27
|
+
|
|
28
|
+
## Fan-out Discipline (P8 B2)
|
|
29
|
+
|
|
30
|
+
This skill delegates per task size:
|
|
31
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
32
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
33
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
34
|
+
|
|
35
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
36
|
+
|
|
37
|
+
## Gate 1: SLO defined
|
|
38
|
+
|
|
39
|
+
- The service has at least one Service Level Objective with target percentile, evaluation window, and a wired burn-rate alert.
|
|
40
|
+
- Format: `availability >= 99.9% over rolling 28d` or `p95 latency <= 300ms over rolling 28d`.
|
|
41
|
+
- Burn-rate alert pattern: multi-window multi-burn-rate (Google SRE) — fast burn (14.4x over 5m AND 6x over 1h) pages immediately; slow burn (3x over 6h AND 1x over 3d) opens a ticket.
|
|
42
|
+
- Output: SLO manifest path committed to the repo (e.g. `slo/<service>.yaml` or a Sloth / OpenSLO file).
|
|
43
|
+
- Check: grep for `slo:` or `objectives:` in the service manifest; reject if absent.
|
|
44
|
+
- Cross-reference: `rules/hatch3r-observability-metrics.md`.
|
|
45
|
+
|
|
46
|
+
## Gate 2: Kill switch present
|
|
47
|
+
|
|
48
|
+
- Every risky feature is gated by an OpenFeature Ops flag with a documented flip procedure.
|
|
49
|
+
- The flag name appears in `docs/runbooks/<service>.md` next to the alert that would trigger its use.
|
|
50
|
+
- Default-on with OFF override; provider connectivity loss does not silently disable the kill switch.
|
|
51
|
+
- Check: open the runbook, locate the flag name, confirm a flip-procedure step exists with the exact CLI or UI action.
|
|
52
|
+
- Cross-reference: `rules/hatch3r-operability.md` §Feature Flags.
|
|
53
|
+
|
|
54
|
+
## Gate 3: Timeouts on every outbound call
|
|
55
|
+
|
|
56
|
+
- Every DB, cache, queue, external HTTP, and external RPC call has an explicit timeout.
|
|
57
|
+
- Deadline propagation verified: parent timeout reaches child via `context.WithDeadline` (Go), chained `AbortSignal` (Web/Node), `Deadline` metadata (gRPC), or `TimeLimiter` (JVM).
|
|
58
|
+
- Default budgets: service-call 5s, DB 2s, cache 200ms, health-probe 1s.
|
|
59
|
+
- Check: grep the codebase for outbound-call sites and confirm each has a timeout argument or wrapper.
|
|
60
|
+
- Cross-reference: `rules/hatch3r-resilience-patterns.md` §Timeouts.
|
|
61
|
+
|
|
62
|
+
## Gate 4: Retries with decorrelated jitter
|
|
63
|
+
|
|
64
|
+
- Outbound calls wrap in a retry library — `opossum` (Node), `resilience4j` (JVM), `Polly` (.NET), `gobreaker` + `cenkalti/backoff` (Go), or `pybreaker` + `tenacity` (Python).
|
|
65
|
+
- Retry algorithm is decorrelated jitter: `sleep = min(cap, random_between(base, prev_sleep * 3))` with base 100ms, cap 30s, max 3 retries.
|
|
66
|
+
- `Idempotency-Key` header present on retried non-idempotent operations (POST, PATCH).
|
|
67
|
+
- Retry budget enforced: retry traffic capped at 10% of base traffic.
|
|
68
|
+
- Cross-reference: `rules/hatch3r-resilience-patterns.md` §Retry.
|
|
69
|
+
|
|
70
|
+
## Gate 5: Probes wired
|
|
71
|
+
|
|
72
|
+
- Kubernetes manifest defines `livenessProbe`, `readinessProbe`, and (for slow-starting services) `startupProbe`.
|
|
73
|
+
- Liveness is shallow (no downstream check); readiness is deep (downstream pings).
|
|
74
|
+
- Distinct endpoints — `/health/live`, `/health/ready`, `/health/startup` — not a single shared `/health`.
|
|
75
|
+
- Probe timeouts under 1s for live, under 2s for ready; periods 10s / 5s / 5s.
|
|
76
|
+
- Check: parse the k8s manifest YAML and verify `livenessProbe.httpGet.path != readinessProbe.httpGet.path` (shared endpoints fail this gate).
|
|
77
|
+
- Cross-reference: `rules/hatch3r-operability.md` §Probes.
|
|
78
|
+
|
|
79
|
+
## Gate 6: Graceful shutdown
|
|
80
|
+
|
|
81
|
+
- SIGTERM handler closes the listener, marks `/health/ready` to 503, then drains in-flight requests.
|
|
82
|
+
- `preStop` hook delays 1–3s before SIGTERM to handle the endpoint-propagation race.
|
|
83
|
+
- `terminationGracePeriodSeconds >= 45`.
|
|
84
|
+
- Queue consumers commit offsets before disconnect.
|
|
85
|
+
- Cross-reference: `rules/hatch3r-operability.md` §Graceful Shutdown.
|
|
86
|
+
|
|
87
|
+
## Gate 7: Runbook URL on every alert
|
|
88
|
+
|
|
89
|
+
- Every Prometheus / Datadog / Grafana alert has a `runbook_url` annotation linking to `docs/runbooks/<alert-name>.md`.
|
|
90
|
+
- Runbook contains the 5 required sections: Symptoms, Triage, Mitigation, Root cause, Follow-ups.
|
|
91
|
+
- CI check on the alert manifest fails any alert without `runbook_url` or with a 404 link.
|
|
92
|
+
- Cross-reference: `rules/hatch3r-operability.md` §Runbook URL.
|
|
93
|
+
|
|
94
|
+
## Gate 8: Staged rollout configured
|
|
95
|
+
|
|
96
|
+
- Deployment uses Argo Rollouts, Flagger, or an equivalent controller with canary or blue-green configured.
|
|
97
|
+
- Stage cadence: 1% → 10% → 50% → 100% with minimum holds 30 min / 1 h / 2 h.
|
|
98
|
+
- Auto-rollback wired to the service SLO burn-rate alert (fast-burn triggers immediate rollback).
|
|
99
|
+
- Canary analysis gates error-rate ratio, p95/p99 latency, and business KPIs against a live baseline.
|
|
100
|
+
- Check: locate the `Rollout` or `Canary` resource in the deploy directory; reject if missing or if `steps:` skips the 1% stage.
|
|
101
|
+
- Cross-reference: `rules/hatch3r-progressive-delivery.md`.
|
|
102
|
+
|
|
103
|
+
## Gate 9: Blast-radius documented
|
|
104
|
+
|
|
105
|
+
- PR description includes the blast-radius block: services affected, regions, traffic %, rollback time target (<5 min), exact rollback command.
|
|
106
|
+
- Rollback command verified by quarterly drill — drill date recorded in the runbook.
|
|
107
|
+
- Database migrations follow expand-contract; no destructive migration ships in the same deploy as the consuming code.
|
|
108
|
+
- Check: parse the PR body for the `## Blast radius` section; reject if absent or if any required field is empty.
|
|
109
|
+
- Cross-reference: `rules/hatch3r-progressive-delivery.md` §Blast-Radius Reasoning.
|
|
110
|
+
|
|
111
|
+
## Verdict
|
|
112
|
+
|
|
113
|
+
All 9 gates pass = the service is "done" enough to ship to production. Anything less = not done; the missing gates are findings against this skill.
|
|
114
|
+
|
|
115
|
+
The orchestrator running this skill emits a single-line verdict per gate (`GATE_N: PASS|FAIL <evidence-path>`) and aggregates them. One FAIL on a required gate blocks the merge regardless of functional-test status.
|
|
116
|
+
|
|
117
|
+
Evidence path format: `path/to/file.yaml:LN` or `commit-sha`. The verdict is auditable — a downstream review or release-gate skill can replay the same checks against the same evidence paths and reproduce the verdict bit-for-bit.
|
|
118
|
+
|
|
119
|
+
Gates run independently — a FAIL on Gate 3 does not short-circuit the remaining gates; the run produces the full 9-line verdict so the developer fixes everything in one pass rather than serializing on rerun cycles.
|
|
120
|
+
|
|
121
|
+
## When this skill runs
|
|
122
|
+
|
|
123
|
+
- After `hatch3r-implementer` finishes service code and before `hatch3r-qa-validation` runs.
|
|
124
|
+
- On every PR that touches `src/services/`, `src/handlers/`, `src/clients/`, `k8s/`, `manifests/`, or the alert / SLO configuration.
|
|
125
|
+
- Gate 9 (drill verification) requires manual confirmation from the on-call rota at release-cut time, not per PR.
|
|
126
|
+
- New-service bootstrap: run the full 9 gates before the first production deploy; failing any one is a blocker, not a follow-up.
|
|
127
|
+
|
|
128
|
+
## Cross-References
|
|
129
|
+
|
|
130
|
+
- `rules/hatch3r-resilience-patterns.md` — circuit breakers, retries with decorrelated jitter, idempotency keys.
|
|
131
|
+
- `rules/hatch3r-operability.md` — probes, graceful shutdown, kill switches, runbooks.
|
|
132
|
+
- `rules/hatch3r-progressive-delivery.md` — canary, blue-green, auto-rollback on SLO burn.
|
|
133
|
+
- `rules/hatch3r-observability-metrics.md` — SLOs, RED metrics, burn-rate alerts.
|
|
134
|
+
|
|
135
|
+
## References
|
|
136
|
+
|
|
137
|
+
- Google SRE workbook — `sre.google/workbook`
|
|
138
|
+
- Kubernetes probes — `kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes`
|
|
139
|
+
- Argo Rollouts — `argoproj.github.io/argo-rollouts`
|
|
140
|
+
- Flagger — `flagger.app`
|
|
141
|
+
- OpenFeature — `openfeature.dev`
|
|
142
|
+
- opossum (Node) — `github.com/nodeshift/opossum`
|
|
143
|
+
- resilience4j (JVM) — `resilience4j.readme.io`
|
|
144
|
+
- Polly (.NET) — `pollydocs.org`
|
|
145
|
+
- Sloth (Prometheus SLO generator) — `sloth.dev`
|
|
146
|
+
- OpenSLO specification — `openslo.com`
|
|
@@ -5,9 +5,19 @@ tags: [customize]
|
|
|
5
5
|
quality_charter: agents/shared/quality-charter.md
|
|
6
6
|
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
7
|
cache_friendly: true
|
|
8
|
+
redirect_to: hatch3r-customize
|
|
8
9
|
---
|
|
9
10
|
# Rule Customization
|
|
10
11
|
|
|
11
12
|
> **This skill has been consolidated.** Use the `hatch3r-customize` skill with `type: rule`.
|
|
12
13
|
|
|
13
14
|
For rule-specific reference (scope overrides, YAML schema), see the `hatch3r-rule-customize` command.
|
|
15
|
+
|
|
16
|
+
## Rejected Merge Alternative (D16.3 add-vs-remove bias)
|
|
17
|
+
|
|
18
|
+
Per `governance/audit/domains/D16-compound-system.md` SA 16.3, the default recommendation on functional overlap is MERGE rather than removal. Full deletion of this redirect file was rejected for two reasons:
|
|
19
|
+
|
|
20
|
+
1. **Preserves UX entry points.** Users typed `/h4tcher-rule-customize` or referenced the id `hatch3r-rule-customize` (per `rules/hatch3r-browser-verification.md:57` and sibling cross-references) before consolidation. Deleting the id breaks those entry points without a redirect target.
|
|
21
|
+
2. **Signals umbrella canonicality.** The `redirect_to: hatch3r-customize` frontmatter field marks `hatch3r-customize` as the single source of truth — tooling, audit scans, and adapters can resolve any redirect to the canonical without re-reading body prose.
|
|
22
|
+
|
|
23
|
+
The 13-LOC redirect cost is paid once per type; the umbrella body lives in `skills/hatch3r-customize/SKILL.md`.
|
|
@@ -5,9 +5,19 @@ tags: [customize]
|
|
|
5
5
|
quality_charter: agents/shared/quality-charter.md
|
|
6
6
|
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
7
7
|
cache_friendly: true
|
|
8
|
+
redirect_to: hatch3r-customize
|
|
8
9
|
---
|
|
9
10
|
# Skill Customization
|
|
10
11
|
|
|
11
12
|
> **This skill has been consolidated.** Use the `hatch3r-customize` skill with `type: skill`.
|
|
12
13
|
|
|
13
14
|
For skill-specific reference (YAML schema, examples), see the `hatch3r-skill-customize` command.
|
|
15
|
+
|
|
16
|
+
## Rejected Merge Alternative (D16.3 add-vs-remove bias)
|
|
17
|
+
|
|
18
|
+
Per `governance/audit/domains/D16-compound-system.md` SA 16.3, the default recommendation on functional overlap is MERGE rather than removal. Full deletion of this redirect file was rejected for two reasons:
|
|
19
|
+
|
|
20
|
+
1. **Preserves UX entry points.** Users typed `/h4tcher-skill-customize` or referenced the id `hatch3r-skill-customize` (per `rules/hatch3r-browser-verification.md:58` and sibling cross-references) before consolidation. Deleting the id breaks those entry points without a redirect target.
|
|
21
|
+
2. **Signals umbrella canonicality.** The `redirect_to: hatch3r-customize` frontmatter field marks `hatch3r-customize` as the single source of truth — tooling, audit scans, and adapters can resolve any redirect to the canonical without re-reading body prose.
|
|
22
|
+
|
|
23
|
+
The 13-LOC redirect cost is paid once per type; the umbrella body lives in `skills/hatch3r-customize/SKILL.md`.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: hatch3r-ui-ux-verify
|
|
3
|
+
type: skill
|
|
4
|
+
description: UI/UX verification gate before declaring a feature done — axe-core, scripted keyboard trace, accessibility-tree snapshot, four-state coverage, visual-regression baseline, one human screen-reader pass per release
|
|
5
|
+
tags: [ui, ux, a11y]
|
|
6
|
+
quality_charter: agents/shared/quality-charter.md
|
|
7
|
+
efficiency_patterns: agents/shared/efficiency-patterns.md
|
|
8
|
+
cache_friendly: true
|
|
9
|
+
---
|
|
10
|
+
# UI/UX Verification Gate
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
This skill defines what "done" means for any feature shipping UI. Run before declaring a feature complete. The 9 gates below mix automated checks (machine-checkable on every PR) with one manual gate (one human screen-reader pass per release). Skipping any gate = the feature is not done. Browser tests and screenshots from `hatch3r-qa-validation` alone do not satisfy this bar.
|
|
15
|
+
|
|
16
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
17
|
+
|
|
18
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: routes in scope (single vs all interactive), WCAG target (2.1 AA vs 2.2 AA), visual-regression baseline policy (regenerate vs keep), AI-UX gate applicability, and whether Gate 9 (manual SR pass) is required this run.
|
|
19
|
+
|
|
20
|
+
## Fan-out Discipline (P8 B2)
|
|
21
|
+
|
|
22
|
+
This skill delegates per task size:
|
|
23
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
24
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
25
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
26
|
+
|
|
27
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
28
|
+
|
|
29
|
+
## Gate 1: Automated a11y scan (axe-core via Playwright)
|
|
30
|
+
|
|
31
|
+
- Command: `npx playwright test --grep @a11y` with `@axe-core/playwright` integration on every interactive route.
|
|
32
|
+
- Pass criteria: 0 serious / 0 critical violations.
|
|
33
|
+
- WCAG 2.2 AA target with explicit checks for the new success criteria:
|
|
34
|
+
- **SC 2.5.8 Target Size:** assert minimum 24x24 CSS px on every focusable element.
|
|
35
|
+
- **SC 2.4.11 Focus Not Obscured:** assert the focus ring is fully visible — not hidden behind sticky headers, banners, or chatbots.
|
|
36
|
+
- **SC 2.5.7 Dragging Movements:** assert a non-drag alternative exists for any drag operation.
|
|
37
|
+
- Output: a11y report committed to PR. Merge gate: 0 violations.
|
|
38
|
+
- Setup: `import AxeBuilder from '@axe-core/playwright'`; call `new AxeBuilder({ page }).analyze()` inside each route test and assert `results.violations.length === 0` after filtering for `impact in ['serious', 'critical']`.
|
|
39
|
+
|
|
40
|
+
## Gate 2: Scripted keyboard trace
|
|
41
|
+
|
|
42
|
+
- Playwright script Tabs / Shift+Tabs / Enter / Space / Escape / Arrows through every interactive element on every route.
|
|
43
|
+
- Per-element assertions:
|
|
44
|
+
- Focus is visible (computed outline width > 0 or detectable focus ring).
|
|
45
|
+
- Focused element is within the viewport (scroll into view if not).
|
|
46
|
+
- No keyboard trap — Tab on the last element exits to the next region.
|
|
47
|
+
- Pass criteria: 100% interactive elements reached + 0 traps + 0 focus-visibility failures.
|
|
48
|
+
- Implementation: enumerate focusable elements via `page.locator('a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])')`; iterate Tab presses up to `count + 5` and record the activeElement chain. Diff against the enumeration; any unreached element fails the gate.
|
|
49
|
+
|
|
50
|
+
## Gate 3: Accessibility-tree snapshot
|
|
51
|
+
|
|
52
|
+
- Playwright captures the accessibility tree on each route via `page.accessibility.snapshot()`.
|
|
53
|
+
- Per-route assertions:
|
|
54
|
+
- Exactly one `<h1>`.
|
|
55
|
+
- Landmark coverage: `banner`, `main`, `nav`, `contentinfo` present.
|
|
56
|
+
- Every form input has an accessible name.
|
|
57
|
+
- Every image has an `alt` attribute or `role="presentation"`.
|
|
58
|
+
- Snapshots committed to the repo. Diff on every PR surfaces visual a11y regression.
|
|
59
|
+
|
|
60
|
+
## Gate 4: Four-state coverage check
|
|
61
|
+
|
|
62
|
+
- For every async surface, assert snapshots exist for all four states:
|
|
63
|
+
- **loading** (skeleton)
|
|
64
|
+
- **empty** (with CTA)
|
|
65
|
+
- **error** (cause + retry)
|
|
66
|
+
- **partial** (banner + degraded data)
|
|
67
|
+
- Missing snapshot = blocker.
|
|
68
|
+
- Convention: `src/__tests__/states/<feature>.<state>.spec.ts`.
|
|
69
|
+
- Discovery: a pre-test script greps for async data hooks (`useQuery`, `useSWR`, `fetch`, `axios`) and emits the list of features that must have all four state files. Missing files fail the gate before any test runs.
|
|
70
|
+
|
|
71
|
+
## Gate 5: Visual regression baseline
|
|
72
|
+
|
|
73
|
+
- `playwright.toHaveScreenshot()` for component-library projects; Chromatic or Percy for Storybook-heavy projects.
|
|
74
|
+
- Baselines committed to git or stored in the registry. Never auto-regenerated in CI on the same commit that introduces a visual change.
|
|
75
|
+
- Pass criteria: 0 unintentional drift. Intentional drift requires a reviewer to update the baseline.
|
|
76
|
+
- Pixel threshold: `maxDiffPixels: 0` for layout-critical screens (header, nav, primary CTA); `maxDiffPixelRatio: 0.001` for content-heavy screens. Tighter thresholds catch silent regressions; looser thresholds tolerate font-rendering noise on content text.
|
|
77
|
+
|
|
78
|
+
## Gate 6: Microcopy lint
|
|
79
|
+
|
|
80
|
+
- Forbid filler tokens in user-facing strings: "oops", "whoops", "something went wrong", "uh oh".
|
|
81
|
+
- Require a corrective verb on error strings — scan the messages files for error messages, fail when no imperative verb appears.
|
|
82
|
+
- Require the `autocomplete` attribute on every input matching `email`, `password`, `name`, or `address`. axe-core covers part of this; add a custom rule for the rest.
|
|
83
|
+
|
|
84
|
+
## Gate 7: Core Web Vitals (2026 thresholds)
|
|
85
|
+
|
|
86
|
+
- Lighthouse CI or the `web-vitals` library in a synthetic environment.
|
|
87
|
+
- p75 thresholds, measured on mobile with slow-4G + 4x CPU throttle:
|
|
88
|
+
- **LCP** <= 2.5s
|
|
89
|
+
- **INP** <= 200ms
|
|
90
|
+
- **CLS** <= 0.1
|
|
91
|
+
- Failure on any metric = merge blocker.
|
|
92
|
+
- Field data follow-up: when production has RUM (Real User Monitoring) wired via `web-vitals` posting to an analytics endpoint, compare p75 field values to synthetic budgets weekly. A 25% gap between synthetic and field is a finding — re-tune the synthetic environment.
|
|
93
|
+
|
|
94
|
+
## Gate 8: AI-UX checks (when applicable)
|
|
95
|
+
|
|
96
|
+
Applies only when the feature ships LLM-driven UI:
|
|
97
|
+
|
|
98
|
+
- Streaming hooks in use — grep for `useChat`, `useCompletion`, `streamUI`, or the framework equivalent.
|
|
99
|
+
- Tool-call cards visible by default — assert at least one rendered card per tool invocation in fixtures.
|
|
100
|
+
- Human-approval gates present for side-effectful tools — assert an approval card before `write`, `send`, or `post` tool calls.
|
|
101
|
+
- Cancel/abort controls present and wired to an `AbortController`.
|
|
102
|
+
|
|
103
|
+
Cross-reference: `rules/hatch3r-ai-ux-patterns.md` (Slice 5).
|
|
104
|
+
|
|
105
|
+
## Gate 9: Manual screen-reader pass (per release, not per PR)
|
|
106
|
+
|
|
107
|
+
- One human pass with VoiceOver (macOS or iOS) or NVDA (Windows) per release on the key user flow.
|
|
108
|
+
- Document the trace in the release notes: route walked, issues found, fixes applied.
|
|
109
|
+
- This gate cannot be skipped or automated away.
|
|
110
|
+
- Trace template: open route, enable screen reader, navigate by heading / by landmark / by form control. Record three things — what was announced, what was missing, what was wrong. Fix or file before release.
|
|
111
|
+
|
|
112
|
+
## Verdict
|
|
113
|
+
|
|
114
|
+
All 9 gates pass = the feature is "done". Anything less = not done.
|
|
115
|
+
|
|
116
|
+
The orchestrator running this skill emits a single-line verdict per gate (`GATE_N: PASS|FAIL <evidence-path>`) and aggregates them. One FAIL on a required gate blocks the merge regardless of QA validation status.
|
|
117
|
+
|
|
118
|
+
## When this skill runs
|
|
119
|
+
|
|
120
|
+
- After `hatch3r-implementer` finishes feature code and before `hatch3r-qa-validation` runs.
|
|
121
|
+
- On every PR that touches `src/components/`, `src/pages/`, `src/routes/`, or any file matched by the design-system glob.
|
|
122
|
+
- Gate 9 (manual screen-reader pass) skipped on PR runs and required at release-cut time only.
|
|
123
|
+
|
|
124
|
+
## Cross-References
|
|
125
|
+
|
|
126
|
+
- `rules/hatch3r-accessibility-standards.md`
|
|
127
|
+
- `rules/hatch3r-ux-states-and-flows.md`
|
|
128
|
+
- `rules/hatch3r-ai-ux-patterns.md`
|
|
129
|
+
- `rules/hatch3r-design-system-detection.md`
|
|
130
|
+
- `rules/hatch3r-performance-budgets.md`
|
|
131
|
+
|
|
132
|
+
## References
|
|
133
|
+
|
|
134
|
+
- Playwright accessibility testing — `playwright.dev/docs/accessibility-testing`
|
|
135
|
+
- Deque axe-core — `github.com/dequelabs/axe-core`
|
|
136
|
+
- Google Core Web Vitals 2026 thresholds — `web.dev/articles/vitals`
|
|
137
|
+
- Vercel AI SDK UI documentation — `sdk.vercel.ai/docs/ai-sdk-ui`
|
|
138
|
+
- WCAG 2.2 — `www.w3.org/TR/WCAG22/`
|
|
@@ -14,6 +14,7 @@ cache_friendly: true
|
|
|
14
14
|
|
|
15
15
|
```
|
|
16
16
|
Task Progress:
|
|
17
|
+
- [ ] Step 0: Detect ambiguity (P8 B1)
|
|
17
18
|
- [ ] Step 1: Read the issue, mockups, and design system
|
|
18
19
|
- [ ] Step 2: Produce a visual change plan
|
|
19
20
|
- [ ] Step 3: Implement matching the mockup
|
|
@@ -21,11 +22,24 @@ Task Progress:
|
|
|
21
22
|
- [ ] Step 5: Open PR with before/after screenshots
|
|
22
23
|
```
|
|
23
24
|
|
|
25
|
+
## Step 0 — Detect Ambiguity (P8 B1)
|
|
26
|
+
|
|
27
|
+
Before any work, scan the invocation for unresolved questions in scope, intent, acceptance criteria, target environment, or irreversibility. If any are found, ask the user via the platform-native question tool per `agents/shared/user-question-protocol.md`. Do not proceed under silent assumption. Default path, not an exception. Triggers for THIS skill: mockup source (provided vs derived from design system), reuse vs extend vs create verdict from `hatch3r-design-system-detect`, responsive breakpoint set, animation budget, and snapshot-regeneration authority.
|
|
28
|
+
|
|
29
|
+
## Fan-out Discipline (P8 B2)
|
|
30
|
+
|
|
31
|
+
This skill delegates per task size:
|
|
32
|
+
- Tier 1 (trivial single-file): inline execution acceptable.
|
|
33
|
+
- Tier 2 (multi-file or multi-concern): spawn parallel sub-agents per concern via the Task tool.
|
|
34
|
+
- Tier 3 (multi-module / high-risk): one fresh sub-agent per independent module or gate; orchestrator integrates only.
|
|
35
|
+
|
|
36
|
+
Never under-fan-out to save tokens. Token cost is dominated by quality and completeness gains. Emit `sub_agents_spawned: { count, rationale }` in your output.
|
|
37
|
+
|
|
24
38
|
## Step 1: Read Inputs
|
|
25
39
|
|
|
26
40
|
- Parse the issue body: proposed changes, before/after mockups, affected surfaces, accessibility checklist, responsiveness requirements.
|
|
27
41
|
- Read project quality documentation (accessibility, animation budgets).
|
|
28
|
-
-
|
|
42
|
+
- Invoke `hatch3r-design-system-detect` to produce the Design System Inventory (`skills/hatch3r-design-system-detect/SKILL.md`). Use the inventory to choose between reuse / extend / create paths. Skipping detection is a regression — visual refactors that invent new tokens or duplicate primitives are rejected at review.
|
|
29
43
|
- For external library docs and current best practices, follow the project's tooling hierarchy.
|
|
30
44
|
|
|
31
45
|
## Step 2: Visual Change Plan
|