bigpowers 2.83.3 → 2.84.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/.codebuddy/skills/align-grid/SKILL.md +110 -0
- package/.codebuddy/skills/assess-impact/SKILL.md +91 -0
- package/.codebuddy/skills/audit-code/SKILL.md +187 -0
- package/.codebuddy/skills/audit-plan/SKILL.md +89 -0
- package/.codebuddy/skills/build-epic/SKILL.md +105 -0
- package/.codebuddy/skills/change-request/SKILL.md +121 -0
- package/.codebuddy/skills/commit-message/SKILL.md +140 -0
- package/.codebuddy/skills/compose-workflow/SKILL.md +82 -0
- package/.codebuddy/skills/context7-mcp/SKILL.md +55 -0
- package/.codebuddy/skills/craft-skill/SKILL.md +179 -0
- package/.codebuddy/skills/deepen-architecture/SKILL.md +260 -0
- package/.codebuddy/skills/define-language/SKILL.md +80 -0
- package/.codebuddy/skills/define-success/SKILL.md +65 -0
- package/.codebuddy/skills/delegate-task/SKILL.md +91 -0
- package/.codebuddy/skills/deploy/SKILL.md +198 -0
- package/.codebuddy/skills/design-interface/SKILL.md +97 -0
- package/.codebuddy/skills/develop-tdd/SKILL.md +406 -0
- package/.codebuddy/skills/diagnose-root/SKILL.md +24 -0
- package/.codebuddy/skills/diagnose-stall/SKILL.md +54 -0
- package/.codebuddy/skills/dispatch-agents/SKILL.md +118 -0
- package/.codebuddy/skills/edit-document/SKILL.md +23 -0
- package/.codebuddy/skills/elaborate-spec/SKILL.md +101 -0
- package/.codebuddy/skills/enforce-first/SKILL.md +32 -0
- package/.codebuddy/skills/evolve-skill/SKILL.md +55 -0
- package/.codebuddy/skills/execute-plan/SKILL.md +61 -0
- package/.codebuddy/skills/extract-design/SKILL.md +132 -0
- package/.codebuddy/skills/find-way/SKILL.md +191 -0
- package/.codebuddy/skills/fix-bug/SKILL.md +67 -0
- package/.codebuddy/skills/gate-trace/SKILL.md +88 -0
- package/.codebuddy/skills/generate-allure-report/SKILL.md +285 -0
- package/.codebuddy/skills/grill-me/SKILL.md +96 -0
- package/.codebuddy/skills/grill-with-docs/SKILL.md +41 -0
- package/.codebuddy/skills/guard-git/SKILL.md +231 -0
- package/.codebuddy/skills/harden-vps/SKILL.md +288 -0
- package/.codebuddy/skills/hook-commits/SKILL.md +94 -0
- package/.codebuddy/skills/inspect-quality/SKILL.md +106 -0
- package/.codebuddy/skills/investigate-bug/SKILL.md +127 -0
- package/.codebuddy/skills/kickoff-branch/SKILL.md +143 -0
- package/.codebuddy/skills/maintain-wiki/SKILL.md +64 -0
- package/.codebuddy/skills/map-codebase/SKILL.md +71 -0
- package/.codebuddy/skills/migrate-spec/SKILL.md +862 -0
- package/.codebuddy/skills/model-domain/SKILL.md +232 -0
- package/.codebuddy/skills/orchestrate-project/SKILL.md +174 -0
- package/.codebuddy/skills/organize-workspace/SKILL.md +164 -0
- package/.codebuddy/skills/plan-refactor/SKILL.md +87 -0
- package/.codebuddy/skills/plan-release/SKILL.md +145 -0
- package/.codebuddy/skills/plan-tests/SKILL.md +75 -0
- package/.codebuddy/skills/plan-work/SKILL.md +260 -0
- package/.codebuddy/skills/publish-package/SKILL.md +328 -0
- package/.codebuddy/skills/quick-fix/SKILL.md +114 -0
- package/.codebuddy/skills/release-branch/SKILL.md +298 -0
- package/.codebuddy/skills/request-review/SKILL.md +112 -0
- package/.codebuddy/skills/research-first/SKILL.md +87 -0
- package/.codebuddy/skills/reset-baseline/SKILL.md +21 -0
- package/.codebuddy/skills/respond-review/SKILL.md +71 -0
- package/.codebuddy/skills/run-benchmark/SKILL.md +85 -0
- package/.codebuddy/skills/run-evals/SKILL.md +80 -0
- package/.codebuddy/skills/run-planning/SKILL.md +101 -0
- package/.codebuddy/skills/scope-work/SKILL.md +63 -0
- package/.codebuddy/skills/search-skills/SKILL.md +73 -0
- package/.codebuddy/skills/security-review/SKILL.md +384 -0
- package/.codebuddy/skills/seed-conventions/SKILL.md +285 -0
- package/.codebuddy/skills/session-state/SKILL.md +146 -0
- package/.codebuddy/skills/setup-environment/SKILL.md +39 -0
- package/.codebuddy/skills/simulate-agents/SKILL.md +26 -0
- package/.codebuddy/skills/slice-tasks/SKILL.md +68 -0
- package/.codebuddy/skills/smoke-test/SKILL.md +242 -0
- package/.codebuddy/skills/spike-prototype/SKILL.md +95 -0
- package/.codebuddy/skills/stocktake-skills/SKILL.md +72 -0
- package/.codebuddy/skills/survey-context/SKILL.md +135 -0
- package/.codebuddy/skills/terse-mode/SKILL.md +42 -0
- package/.codebuddy/skills/trace-requirement/SKILL.md +69 -0
- package/.codebuddy/skills/using-bigpowers/SKILL.md +111 -0
- package/.codebuddy/skills/validate-contracts/SKILL.md +309 -0
- package/.codebuddy/skills/validate-fix/SKILL.md +106 -0
- package/.codebuddy/skills/verify-work/SKILL.md +191 -0
- package/.codebuddy/skills/visual-dashboard/SKILL.md +50 -0
- package/.codebuddy/skills/wire-ci/SKILL.md +375 -0
- package/.codebuddy/skills/wire-observability/SKILL.md +97 -0
- package/.codebuddy/skills/write-document/SKILL.md +255 -0
- package/.codex/skills/align-grid/SKILL.md +110 -0
- package/.codex/skills/assess-impact/SKILL.md +91 -0
- package/.codex/skills/audit-code/SKILL.md +187 -0
- package/.codex/skills/audit-plan/SKILL.md +89 -0
- package/.codex/skills/build-epic/SKILL.md +105 -0
- package/.codex/skills/change-request/SKILL.md +121 -0
- package/.codex/skills/commit-message/SKILL.md +140 -0
- package/.codex/skills/compose-workflow/SKILL.md +82 -0
- package/.codex/skills/context7-mcp/SKILL.md +55 -0
- package/.codex/skills/craft-skill/SKILL.md +179 -0
- package/.codex/skills/deepen-architecture/SKILL.md +260 -0
- package/.codex/skills/define-language/SKILL.md +80 -0
- package/.codex/skills/define-success/SKILL.md +65 -0
- package/.codex/skills/delegate-task/SKILL.md +91 -0
- package/.codex/skills/deploy/SKILL.md +198 -0
- package/.codex/skills/design-interface/SKILL.md +97 -0
- package/.codex/skills/develop-tdd/SKILL.md +406 -0
- package/.codex/skills/diagnose-root/SKILL.md +24 -0
- package/.codex/skills/diagnose-stall/SKILL.md +54 -0
- package/.codex/skills/dispatch-agents/SKILL.md +118 -0
- package/.codex/skills/edit-document/SKILL.md +23 -0
- package/.codex/skills/elaborate-spec/SKILL.md +101 -0
- package/.codex/skills/enforce-first/SKILL.md +32 -0
- package/.codex/skills/evolve-skill/SKILL.md +55 -0
- package/.codex/skills/execute-plan/SKILL.md +61 -0
- package/.codex/skills/extract-design/SKILL.md +132 -0
- package/.codex/skills/find-way/SKILL.md +191 -0
- package/.codex/skills/fix-bug/SKILL.md +67 -0
- package/.codex/skills/gate-trace/SKILL.md +88 -0
- package/.codex/skills/generate-allure-report/SKILL.md +285 -0
- package/.codex/skills/grill-me/SKILL.md +96 -0
- package/.codex/skills/grill-with-docs/SKILL.md +41 -0
- package/.codex/skills/guard-git/SKILL.md +231 -0
- package/.codex/skills/harden-vps/SKILL.md +288 -0
- package/.codex/skills/hook-commits/SKILL.md +94 -0
- package/.codex/skills/inspect-quality/SKILL.md +106 -0
- package/.codex/skills/investigate-bug/SKILL.md +127 -0
- package/.codex/skills/kickoff-branch/SKILL.md +143 -0
- package/.codex/skills/maintain-wiki/SKILL.md +64 -0
- package/.codex/skills/map-codebase/SKILL.md +71 -0
- package/.codex/skills/migrate-spec/SKILL.md +862 -0
- package/.codex/skills/model-domain/SKILL.md +232 -0
- package/.codex/skills/orchestrate-project/SKILL.md +174 -0
- package/.codex/skills/organize-workspace/SKILL.md +164 -0
- package/.codex/skills/plan-refactor/SKILL.md +87 -0
- package/.codex/skills/plan-release/SKILL.md +145 -0
- package/.codex/skills/plan-tests/SKILL.md +75 -0
- package/.codex/skills/plan-work/SKILL.md +260 -0
- package/.codex/skills/publish-package/SKILL.md +328 -0
- package/.codex/skills/quick-fix/SKILL.md +114 -0
- package/.codex/skills/release-branch/SKILL.md +298 -0
- package/.codex/skills/request-review/SKILL.md +112 -0
- package/.codex/skills/research-first/SKILL.md +87 -0
- package/.codex/skills/reset-baseline/SKILL.md +21 -0
- package/.codex/skills/respond-review/SKILL.md +71 -0
- package/.codex/skills/run-benchmark/SKILL.md +85 -0
- package/.codex/skills/run-evals/SKILL.md +80 -0
- package/.codex/skills/run-planning/SKILL.md +101 -0
- package/.codex/skills/scope-work/SKILL.md +63 -0
- package/.codex/skills/search-skills/SKILL.md +73 -0
- package/.codex/skills/security-review/SKILL.md +384 -0
- package/.codex/skills/seed-conventions/SKILL.md +285 -0
- package/.codex/skills/session-state/SKILL.md +146 -0
- package/.codex/skills/setup-environment/SKILL.md +39 -0
- package/.codex/skills/simulate-agents/SKILL.md +26 -0
- package/.codex/skills/slice-tasks/SKILL.md +68 -0
- package/.codex/skills/smoke-test/SKILL.md +242 -0
- package/.codex/skills/spike-prototype/SKILL.md +95 -0
- package/.codex/skills/stocktake-skills/SKILL.md +72 -0
- package/.codex/skills/survey-context/SKILL.md +135 -0
- package/.codex/skills/terse-mode/SKILL.md +42 -0
- package/.codex/skills/trace-requirement/SKILL.md +69 -0
- package/.codex/skills/using-bigpowers/SKILL.md +111 -0
- package/.codex/skills/validate-contracts/SKILL.md +309 -0
- package/.codex/skills/validate-fix/SKILL.md +106 -0
- package/.codex/skills/verify-work/SKILL.md +191 -0
- package/.codex/skills/visual-dashboard/SKILL.md +50 -0
- package/.codex/skills/wire-ci/SKILL.md +375 -0
- package/.codex/skills/wire-observability/SKILL.md +97 -0
- package/.codex/skills/write-document/SKILL.md +255 -0
- package/.kilocode/rules/align-grid.md +110 -0
- package/.kilocode/rules/assess-impact.md +91 -0
- package/.kilocode/rules/audit-code.md +187 -0
- package/.kilocode/rules/audit-plan.md +89 -0
- package/.kilocode/rules/build-epic.md +105 -0
- package/.kilocode/rules/change-request.md +121 -0
- package/.kilocode/rules/commit-message.md +140 -0
- package/.kilocode/rules/compose-workflow.md +82 -0
- package/.kilocode/rules/context7-mcp.md +55 -0
- package/.kilocode/rules/craft-skill.md +179 -0
- package/.kilocode/rules/deepen-architecture.md +260 -0
- package/.kilocode/rules/define-language.md +80 -0
- package/.kilocode/rules/define-success.md +65 -0
- package/.kilocode/rules/delegate-task.md +91 -0
- package/.kilocode/rules/deploy.md +198 -0
- package/.kilocode/rules/design-interface.md +97 -0
- package/.kilocode/rules/develop-tdd.md +406 -0
- package/.kilocode/rules/diagnose-root.md +24 -0
- package/.kilocode/rules/diagnose-stall.md +54 -0
- package/.kilocode/rules/dispatch-agents.md +118 -0
- package/.kilocode/rules/edit-document.md +23 -0
- package/.kilocode/rules/elaborate-spec.md +101 -0
- package/.kilocode/rules/enforce-first.md +32 -0
- package/.kilocode/rules/evolve-skill.md +55 -0
- package/.kilocode/rules/execute-plan.md +61 -0
- package/.kilocode/rules/extract-design.md +132 -0
- package/.kilocode/rules/find-way.md +191 -0
- package/.kilocode/rules/fix-bug.md +67 -0
- package/.kilocode/rules/gate-trace.md +88 -0
- package/.kilocode/rules/generate-allure-report.md +285 -0
- package/.kilocode/rules/grill-me.md +96 -0
- package/.kilocode/rules/grill-with-docs.md +41 -0
- package/.kilocode/rules/guard-git.md +231 -0
- package/.kilocode/rules/harden-vps.md +288 -0
- package/.kilocode/rules/hook-commits.md +94 -0
- package/.kilocode/rules/inspect-quality.md +106 -0
- package/.kilocode/rules/investigate-bug.md +127 -0
- package/.kilocode/rules/kickoff-branch.md +143 -0
- package/.kilocode/rules/maintain-wiki.md +64 -0
- package/.kilocode/rules/map-codebase.md +71 -0
- package/.kilocode/rules/migrate-spec.md +862 -0
- package/.kilocode/rules/model-domain.md +232 -0
- package/.kilocode/rules/orchestrate-project.md +174 -0
- package/.kilocode/rules/organize-workspace.md +164 -0
- package/.kilocode/rules/plan-refactor.md +87 -0
- package/.kilocode/rules/plan-release.md +145 -0
- package/.kilocode/rules/plan-tests.md +75 -0
- package/.kilocode/rules/plan-work.md +260 -0
- package/.kilocode/rules/publish-package.md +328 -0
- package/.kilocode/rules/quick-fix.md +114 -0
- package/.kilocode/rules/release-branch.md +298 -0
- package/.kilocode/rules/request-review.md +112 -0
- package/.kilocode/rules/research-first.md +87 -0
- package/.kilocode/rules/reset-baseline.md +21 -0
- package/.kilocode/rules/respond-review.md +71 -0
- package/.kilocode/rules/run-benchmark.md +85 -0
- package/.kilocode/rules/run-evals.md +80 -0
- package/.kilocode/rules/run-planning.md +101 -0
- package/.kilocode/rules/scope-work.md +63 -0
- package/.kilocode/rules/search-skills.md +73 -0
- package/.kilocode/rules/security-review.md +384 -0
- package/.kilocode/rules/seed-conventions.md +285 -0
- package/.kilocode/rules/session-state.md +146 -0
- package/.kilocode/rules/setup-environment.md +39 -0
- package/.kilocode/rules/simulate-agents.md +26 -0
- package/.kilocode/rules/slice-tasks.md +68 -0
- package/.kilocode/rules/smoke-test.md +242 -0
- package/.kilocode/rules/spike-prototype.md +95 -0
- package/.kilocode/rules/stocktake-skills.md +72 -0
- package/.kilocode/rules/survey-context.md +135 -0
- package/.kilocode/rules/terse-mode.md +42 -0
- package/.kilocode/rules/trace-requirement.md +69 -0
- package/.kilocode/rules/using-bigpowers.md +111 -0
- package/.kilocode/rules/validate-contracts.md +309 -0
- package/.kilocode/rules/validate-fix.md +106 -0
- package/.kilocode/rules/verify-work.md +191 -0
- package/.kilocode/rules/visual-dashboard.md +50 -0
- package/.kilocode/rules/wire-ci.md +375 -0
- package/.kilocode/rules/wire-observability.md +97 -0
- package/.kilocode/rules/write-document.md +255 -0
- package/.pi/package.json +1 -1
- package/.trae/skills/align-grid/SKILL.md +110 -0
- package/.trae/skills/assess-impact/SKILL.md +91 -0
- package/.trae/skills/audit-code/SKILL.md +187 -0
- package/.trae/skills/audit-plan/SKILL.md +89 -0
- package/.trae/skills/build-epic/SKILL.md +105 -0
- package/.trae/skills/change-request/SKILL.md +121 -0
- package/.trae/skills/commit-message/SKILL.md +140 -0
- package/.trae/skills/compose-workflow/SKILL.md +82 -0
- package/.trae/skills/context7-mcp/SKILL.md +55 -0
- package/.trae/skills/craft-skill/SKILL.md +179 -0
- package/.trae/skills/deepen-architecture/SKILL.md +260 -0
- package/.trae/skills/define-language/SKILL.md +80 -0
- package/.trae/skills/define-success/SKILL.md +65 -0
- package/.trae/skills/delegate-task/SKILL.md +91 -0
- package/.trae/skills/deploy/SKILL.md +198 -0
- package/.trae/skills/design-interface/SKILL.md +97 -0
- package/.trae/skills/develop-tdd/SKILL.md +406 -0
- package/.trae/skills/diagnose-root/SKILL.md +24 -0
- package/.trae/skills/diagnose-stall/SKILL.md +54 -0
- package/.trae/skills/dispatch-agents/SKILL.md +118 -0
- package/.trae/skills/edit-document/SKILL.md +23 -0
- package/.trae/skills/elaborate-spec/SKILL.md +101 -0
- package/.trae/skills/enforce-first/SKILL.md +32 -0
- package/.trae/skills/evolve-skill/SKILL.md +55 -0
- package/.trae/skills/execute-plan/SKILL.md +61 -0
- package/.trae/skills/extract-design/SKILL.md +132 -0
- package/.trae/skills/find-way/SKILL.md +191 -0
- package/.trae/skills/fix-bug/SKILL.md +67 -0
- package/.trae/skills/gate-trace/SKILL.md +88 -0
- package/.trae/skills/generate-allure-report/SKILL.md +285 -0
- package/.trae/skills/grill-me/SKILL.md +96 -0
- package/.trae/skills/grill-with-docs/SKILL.md +41 -0
- package/.trae/skills/guard-git/SKILL.md +231 -0
- package/.trae/skills/harden-vps/SKILL.md +288 -0
- package/.trae/skills/hook-commits/SKILL.md +94 -0
- package/.trae/skills/inspect-quality/SKILL.md +106 -0
- package/.trae/skills/investigate-bug/SKILL.md +127 -0
- package/.trae/skills/kickoff-branch/SKILL.md +143 -0
- package/.trae/skills/maintain-wiki/SKILL.md +64 -0
- package/.trae/skills/map-codebase/SKILL.md +71 -0
- package/.trae/skills/migrate-spec/SKILL.md +862 -0
- package/.trae/skills/model-domain/SKILL.md +232 -0
- package/.trae/skills/orchestrate-project/SKILL.md +174 -0
- package/.trae/skills/organize-workspace/SKILL.md +164 -0
- package/.trae/skills/plan-refactor/SKILL.md +87 -0
- package/.trae/skills/plan-release/SKILL.md +145 -0
- package/.trae/skills/plan-tests/SKILL.md +75 -0
- package/.trae/skills/plan-work/SKILL.md +260 -0
- package/.trae/skills/publish-package/SKILL.md +328 -0
- package/.trae/skills/quick-fix/SKILL.md +114 -0
- package/.trae/skills/release-branch/SKILL.md +298 -0
- package/.trae/skills/request-review/SKILL.md +112 -0
- package/.trae/skills/research-first/SKILL.md +87 -0
- package/.trae/skills/reset-baseline/SKILL.md +21 -0
- package/.trae/skills/respond-review/SKILL.md +71 -0
- package/.trae/skills/run-benchmark/SKILL.md +85 -0
- package/.trae/skills/run-evals/SKILL.md +80 -0
- package/.trae/skills/run-planning/SKILL.md +101 -0
- package/.trae/skills/scope-work/SKILL.md +63 -0
- package/.trae/skills/search-skills/SKILL.md +73 -0
- package/.trae/skills/security-review/SKILL.md +384 -0
- package/.trae/skills/seed-conventions/SKILL.md +285 -0
- package/.trae/skills/session-state/SKILL.md +146 -0
- package/.trae/skills/setup-environment/SKILL.md +39 -0
- package/.trae/skills/simulate-agents/SKILL.md +26 -0
- package/.trae/skills/slice-tasks/SKILL.md +68 -0
- package/.trae/skills/smoke-test/SKILL.md +242 -0
- package/.trae/skills/spike-prototype/SKILL.md +95 -0
- package/.trae/skills/stocktake-skills/SKILL.md +72 -0
- package/.trae/skills/survey-context/SKILL.md +135 -0
- package/.trae/skills/terse-mode/SKILL.md +42 -0
- package/.trae/skills/trace-requirement/SKILL.md +69 -0
- package/.trae/skills/using-bigpowers/SKILL.md +111 -0
- package/.trae/skills/validate-contracts/SKILL.md +309 -0
- package/.trae/skills/validate-fix/SKILL.md +106 -0
- package/.trae/skills/verify-work/SKILL.md +191 -0
- package/.trae/skills/visual-dashboard/SKILL.md +50 -0
- package/.trae/skills/wire-ci/SKILL.md +375 -0
- package/.trae/skills/wire-observability/SKILL.md +97 -0
- package/.trae/skills/write-document/SKILL.md +255 -0
- package/.windsurf/rules/align-grid.md +110 -0
- package/.windsurf/rules/assess-impact.md +91 -0
- package/.windsurf/rules/audit-code.md +187 -0
- package/.windsurf/rules/audit-plan.md +89 -0
- package/.windsurf/rules/build-epic.md +105 -0
- package/.windsurf/rules/change-request.md +121 -0
- package/.windsurf/rules/commit-message.md +140 -0
- package/.windsurf/rules/compose-workflow.md +82 -0
- package/.windsurf/rules/context7-mcp.md +55 -0
- package/.windsurf/rules/craft-skill.md +179 -0
- package/.windsurf/rules/deepen-architecture.md +260 -0
- package/.windsurf/rules/define-language.md +80 -0
- package/.windsurf/rules/define-success.md +65 -0
- package/.windsurf/rules/delegate-task.md +91 -0
- package/.windsurf/rules/deploy.md +198 -0
- package/.windsurf/rules/design-interface.md +97 -0
- package/.windsurf/rules/develop-tdd.md +406 -0
- package/.windsurf/rules/diagnose-root.md +24 -0
- package/.windsurf/rules/diagnose-stall.md +54 -0
- package/.windsurf/rules/dispatch-agents.md +118 -0
- package/.windsurf/rules/edit-document.md +23 -0
- package/.windsurf/rules/elaborate-spec.md +101 -0
- package/.windsurf/rules/enforce-first.md +32 -0
- package/.windsurf/rules/evolve-skill.md +55 -0
- package/.windsurf/rules/execute-plan.md +61 -0
- package/.windsurf/rules/extract-design.md +132 -0
- package/.windsurf/rules/find-way.md +191 -0
- package/.windsurf/rules/fix-bug.md +67 -0
- package/.windsurf/rules/gate-trace.md +88 -0
- package/.windsurf/rules/generate-allure-report.md +285 -0
- package/.windsurf/rules/grill-me.md +96 -0
- package/.windsurf/rules/grill-with-docs.md +41 -0
- package/.windsurf/rules/guard-git.md +231 -0
- package/.windsurf/rules/harden-vps.md +288 -0
- package/.windsurf/rules/hook-commits.md +94 -0
- package/.windsurf/rules/inspect-quality.md +106 -0
- package/.windsurf/rules/investigate-bug.md +127 -0
- package/.windsurf/rules/kickoff-branch.md +143 -0
- package/.windsurf/rules/maintain-wiki.md +64 -0
- package/.windsurf/rules/map-codebase.md +71 -0
- package/.windsurf/rules/migrate-spec.md +862 -0
- package/.windsurf/rules/model-domain.md +232 -0
- package/.windsurf/rules/orchestrate-project.md +174 -0
- package/.windsurf/rules/organize-workspace.md +164 -0
- package/.windsurf/rules/plan-refactor.md +87 -0
- package/.windsurf/rules/plan-release.md +145 -0
- package/.windsurf/rules/plan-tests.md +75 -0
- package/.windsurf/rules/plan-work.md +260 -0
- package/.windsurf/rules/publish-package.md +328 -0
- package/.windsurf/rules/quick-fix.md +114 -0
- package/.windsurf/rules/release-branch.md +298 -0
- package/.windsurf/rules/request-review.md +112 -0
- package/.windsurf/rules/research-first.md +87 -0
- package/.windsurf/rules/reset-baseline.md +21 -0
- package/.windsurf/rules/respond-review.md +71 -0
- package/.windsurf/rules/run-benchmark.md +85 -0
- package/.windsurf/rules/run-evals.md +80 -0
- package/.windsurf/rules/run-planning.md +101 -0
- package/.windsurf/rules/scope-work.md +63 -0
- package/.windsurf/rules/search-skills.md +73 -0
- package/.windsurf/rules/security-review.md +384 -0
- package/.windsurf/rules/seed-conventions.md +285 -0
- package/.windsurf/rules/session-state.md +146 -0
- package/.windsurf/rules/setup-environment.md +39 -0
- package/.windsurf/rules/simulate-agents.md +26 -0
- package/.windsurf/rules/slice-tasks.md +68 -0
- package/.windsurf/rules/smoke-test.md +242 -0
- package/.windsurf/rules/spike-prototype.md +95 -0
- package/.windsurf/rules/stocktake-skills.md +72 -0
- package/.windsurf/rules/survey-context.md +135 -0
- package/.windsurf/rules/terse-mode.md +42 -0
- package/.windsurf/rules/trace-requirement.md +69 -0
- package/.windsurf/rules/using-bigpowers.md +111 -0
- package/.windsurf/rules/validate-contracts.md +309 -0
- package/.windsurf/rules/validate-fix.md +106 -0
- package/.windsurf/rules/verify-work.md +191 -0
- package/.windsurf/rules/visual-dashboard.md +50 -0
- package/.windsurf/rules/wire-ci.md +375 -0
- package/.windsurf/rules/wire-observability.md +97 -0
- package/.windsurf/rules/write-document.md +255 -0
- package/CHANGELOG.md +37 -0
- package/CONVENTIONS.md +22 -0
- package/bin/setup.js +35 -7
- package/instructions +1 -0
- package/package.json +1 -1
- package/scripts/adapters/cline.sh +53 -3
- package/scripts/adapters/codebuddy.sh +58 -0
- package/scripts/adapters/codex.sh +58 -0
- package/scripts/adapters/copilot.sh +58 -0
- package/scripts/adapters/kilocode.sh +44 -3
- package/scripts/adapters/opencode.sh +58 -0
- package/scripts/adapters/qwen.sh +53 -1
- package/scripts/adapters/trae.sh +58 -0
- package/scripts/adapters/windsurf.sh +52 -0
- package/scripts/bp-yaml-set.sh +2 -0
- package/scripts/generate-wave-b-hub.py +31 -0
- package/scripts/hooks/cline/HOOKS.md +16 -0
- package/scripts/hooks/cline/hooks-manifest.json +12 -0
- package/scripts/hooks/cline/plugin/guard-git-plugin.ts +16 -0
- package/scripts/hooks/codebuddy/HOOKS.md +24 -0
- package/scripts/hooks/codebuddy/hooks-manifest.json +20 -0
- package/scripts/hooks/codebuddy/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/codebuddy/settings.example.json +16 -0
- package/scripts/hooks/codex/HOOKS.md +21 -0
- package/scripts/hooks/codex/hooks-manifest.json +17 -0
- package/scripts/hooks/codex/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/codex/settings.example.json +16 -0
- package/scripts/hooks/kilocode/HOOKS.md +16 -0
- package/scripts/hooks/kilocode/hooks-manifest.json +12 -0
- package/scripts/hooks/kilocode/plugin/guard-git-plugin.ts +16 -0
- package/scripts/hooks/qwen/HOOKS.md +27 -0
- package/scripts/hooks/qwen/hooks-manifest.json +23 -0
- package/scripts/hooks/qwen/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/qwen/settings.example.json +16 -0
- package/scripts/hooks/trae/HOOKS.md +17 -0
- package/scripts/hooks/trae/hooks-manifest.json +13 -0
- package/scripts/hooks/trae/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/trae/settings.example.json +16 -0
- package/scripts/hooks/windsurf/HOOKS.md +23 -0
- package/scripts/hooks/windsurf/hooks-manifest.json +19 -0
- package/scripts/hooks/windsurf/pre-tool-git-guard.sh +22 -0
- package/scripts/hooks/windsurf/settings.example.json +16 -0
- package/scripts/install.sh +33 -373
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
- package/scripts/lib/context-wire.sh +5 -0
- package/scripts/lib/install-grep.sh +18 -0
- package/scripts/lib/install-helpers.js +139 -2
- package/scripts/lib/install-targets-a.sh +227 -0
- package/scripts/lib/install-targets-b.sh +226 -0
- package/scripts/lib/install-targets-c.sh +128 -0
- package/scripts/lib/install-targets-d.sh +179 -0
- package/scripts/lib/srp-engine.py +2 -70
- package/scripts/lib/srp_engine_links.py +59 -0
- package/scripts/lib/wave_b_hub_codegen_helpers.py +273 -0
- package/scripts/lib/wave_b_hub_codegen_install.py +134 -0
- package/scripts/lib/wave_b_hub_config.py +130 -0
- package/scripts/lib/wave_b_hub_patch.py +213 -0
- package/scripts/record-cycle-time.sh +3 -14
- package/scripts/targets.yaml +75 -2
- package/scripts/test-agy-hub.sh +11 -10
- package/scripts/test-cline-adapter.sh +55 -0
- package/scripts/test-cline-hub.sh +48 -0
- package/scripts/test-codebuddy-adapter.sh +63 -0
- package/scripts/test-codebuddy-hub.sh +49 -0
- package/scripts/test-codex-adapter.sh +63 -0
- package/scripts/test-codex-hub.sh +49 -0
- package/scripts/test-copilot-adapter.sh +47 -0
- package/scripts/test-copilot-hub.sh +43 -0
- package/scripts/test-gemini-hub.sh +10 -9
- package/scripts/test-hermes-hub.sh +7 -6
- package/scripts/test-install-distribute-only.sh +3 -0
- package/scripts/test-install-helpers.js +9 -3
- package/scripts/test-kilocode-adapter.sh +55 -0
- package/scripts/test-kilocode-hub.sh +48 -0
- package/scripts/test-mimo-hub.sh +7 -6
- package/scripts/test-opencode-adapter.sh +47 -0
- package/scripts/test-opencode-hub.sh +43 -0
- package/scripts/test-qwen-adapter.sh +63 -0
- package/scripts/test-qwen-hub.sh +49 -0
- package/scripts/test-trae-adapter.sh +63 -0
- package/scripts/test-trae-hub.sh +49 -0
- package/scripts/test-windsurf-adapter.sh +63 -0
- package/scripts/test-windsurf-hub.sh +49 -0
- package/scripts/test-zcode-hub.sh +7 -6
- package/scripts/verify-install.sh +83 -29
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: find-way
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: "Plan a large effort as a shared map of decision tickets on an issue tracker, resolving them one at a time until the way is clear. Use when an idea is too big for one session, needs structured exploration before implementation, or requires mapping decisions before building."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Find Way
|
|
8
|
+
|
|
9
|
+
## Concept
|
|
10
|
+
|
|
11
|
+
A large effort arrives — too big for one session, wrapped in fog. **Find-way** charts the way as a **shared map** on the repo's issue tracker, then works **decision tickets** — questions whose resolution is a decision, not build slices — one at a time until the route is clear.
|
|
12
|
+
|
|
13
|
+
**Plan, don't do.** Each ticket resolves a decision. The map is done when the way is clear — nothing left to decide before someone executes.
|
|
14
|
+
|
|
15
|
+
**Refer by name.** Every map and ticket is an issue with a title. Always use the name, never bare ids or numbers.
|
|
16
|
+
|
|
17
|
+
## The Map
|
|
18
|
+
|
|
19
|
+
A single issue labelled `wayfinder:map` — the canonical artifact. Child issues are its tickets.
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
## Destination
|
|
23
|
+
<what reaching the end looks like — one or two lines>
|
|
24
|
+
|
|
25
|
+
## Notes
|
|
26
|
+
<domain, skills to consult, standing preferences>
|
|
27
|
+
|
|
28
|
+
## Decisions so far
|
|
29
|
+
- [closed ticket title](link) — one-line gist
|
|
30
|
+
|
|
31
|
+
## Not yet specified
|
|
32
|
+
<in-scope fog you can't ticket yet>
|
|
33
|
+
|
|
34
|
+
## Out of scope
|
|
35
|
+
<work ruled beyond the destination>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Ticket Types
|
|
39
|
+
|
|
40
|
+
| Type | Label | Mode | Purpose |
|
|
41
|
+
|------|-------|------|---------|
|
|
42
|
+
| Research | `wayfinder:research` | AFK | Surface facts from docs/APIs |
|
|
43
|
+
| Prototype | `wayfinder:prototype` | HITL | Cheap artifact to react to |
|
|
44
|
+
| Grilling | `wayfinder:grilling` | HITL | One-question-at-a-time dialogue |
|
|
45
|
+
| Task | `wayfinder:task` | Either | Manual work unblocking a decision |
|
|
46
|
+
|
|
47
|
+
**HITL** = human in the loop. **AFK** = agent alone.
|
|
48
|
+
|
|
49
|
+
## Two Modes
|
|
50
|
+
|
|
51
|
+
### Chart the Map
|
|
52
|
+
|
|
53
|
+
User invokes with a loose idea.
|
|
54
|
+
|
|
55
|
+
1. **Name the destination** — grill to pin down what this map finds its way to
|
|
56
|
+
2. **Map the frontier** — breadth-first: surface open decisions and first steps. If no fog emerges, the effort fits one session — skip the map
|
|
57
|
+
3. **Create the map** issue (label `wayfinder:map`)
|
|
58
|
+
4. **Create tickets** as child issues, then wire blocking edges in a second pass
|
|
59
|
+
5. **Fire research subagents** for each `research` ticket in parallel
|
|
60
|
+
6. Stop — charting resolves nothing
|
|
61
|
+
|
|
62
|
+
### Work Through the Map
|
|
63
|
+
|
|
64
|
+
User invokes with a map (URL/number). Ticket optional — without one, pick the next frontier ticket.
|
|
65
|
+
|
|
66
|
+
1. Load the map (low-res view)
|
|
67
|
+
2. **Choose & claim** — assign ticket before any work
|
|
68
|
+
3. **Resolve** — zoom into related/closed tickets as needed
|
|
69
|
+
4. **Record** — post resolution comment, close issue, append to Decisions-so-far
|
|
70
|
+
5. **Graduate fog** — create new tickets from newly-specifiable fog, clear from Not-yet-specified
|
|
71
|
+
6. **Rule out of scope** if resolution reveals something past the destination
|
|
72
|
+
|
|
73
|
+
**Never resolve more than one ticket per session** (except research).
|
|
74
|
+
|
|
75
|
+
## Fog of War
|
|
76
|
+
|
|
77
|
+
Beyond live tickets lies the **fog** — decisions you can tell are coming but can't pin down yet. The **Not yet specified** section holds this dim view.
|
|
78
|
+
|
|
79
|
+
**Fog or ticket?** Test: can you state the question precisely now?
|
|
80
|
+
|
|
81
|
+
- **Ticket** when the question is sharp (even if blocked)
|
|
82
|
+
- **Not yet specified** when you can't phrase it sharply yet
|
|
83
|
+
|
|
84
|
+
## Out of Scope
|
|
85
|
+
|
|
86
|
+
Work beyond the destination. Ruling something out is a scoping act, not a route step. Never graduates — returns only if destination is redrawn.
|
|
87
|
+
|
|
88
|
+
If an existing ticket sits past the destination, close it and note in Out of scope.
|
|
89
|
+
|
|
90
|
+
## Blocking & Frontier
|
|
91
|
+
|
|
92
|
+
- **Blocking**: tracker's native dependency relationship
|
|
93
|
+
- **Unblocked**: every blocker is closed
|
|
94
|
+
- **Frontier**: open, unblocked, unclaimed children — the edge of the known
|
|
95
|
+
|
|
96
|
+
## Detailed Reference
|
|
97
|
+
|
|
98
|
+
See [REFERENCE.md](REFERENCE.md) for ticket anatomy, resolution protocol, and examples.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
# Find-Way Reference
|
|
103
|
+
|
|
104
|
+
## Ticket Anatomy
|
|
105
|
+
|
|
106
|
+
Each ticket holds one question, sized to one 100K token agent session:
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Question
|
|
110
|
+
|
|
111
|
+
<the decision or investigation this ticket resolves>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Labels:** `wayfinder:research`, `wayfinder:prototype`, `wayfinder:grilling`, or `wayfinder:task`
|
|
115
|
+
|
|
116
|
+
**Claim:** Assign to yourself before any work — claim blocks concurrent sessions.
|
|
117
|
+
|
|
118
|
+
**Blocking:** Use tracker's native dependency relationship so the frontier renders visually.
|
|
119
|
+
|
|
120
|
+
**Resolution:** Post answer as a comment, close the issue, append to map's Decisions-so-far.
|
|
121
|
+
|
|
122
|
+
## Resolution Protocol
|
|
123
|
+
|
|
124
|
+
1. **Load the map** — read low-res view, not every ticket body
|
|
125
|
+
2. **Choose & claim** — assign ticket to yourself (or take first frontier ticket if not named)
|
|
126
|
+
3. **Resolve** — zoom into related/closed tickets as needed; invoke skills the Notes block names
|
|
127
|
+
4. **Record** — post resolution comment with the answer, close the issue
|
|
128
|
+
5. **Update map** — append to Decisions-so-far with one-line gist + link
|
|
129
|
+
6. **Graduate fog** — create new tickets from newly-specifiable fog; clear from Not-yet-specified
|
|
130
|
+
7. **Rule out of scope** if resolution reveals something past the destination
|
|
131
|
+
|
|
132
|
+
## Ticket Types in Detail
|
|
133
|
+
|
|
134
|
+
### Research (AFK)
|
|
135
|
+
Surfacing facts from docs, APIs, or knowledge bases that a decision waits on.
|
|
136
|
+
- Resolved by a `/research` subagent
|
|
137
|
+
- Use when knowledge outside the working directory is required
|
|
138
|
+
- **Label:** `wayfinder:research`
|
|
139
|
+
|
|
140
|
+
### Prototype (HITL)
|
|
141
|
+
Raise fidelity by building cheap, rough, concrete artifact to react to — outline, stub, UI/logic code.
|
|
142
|
+
- Use the `/prototype` skill
|
|
143
|
+
- Links the prototype as an asset
|
|
144
|
+
- Use when "how should it look" or "how should it behave" is key
|
|
145
|
+
- **Label:** `wayfinder:prototype`
|
|
146
|
+
|
|
147
|
+
### Grilling (HITL)
|
|
148
|
+
Conversation via `/grilling` and `/domain-modeling` skills, one question at a time.
|
|
149
|
+
- The default case for clarifying decisions
|
|
150
|
+
- **Label:** `wayfinder:grilling`
|
|
151
|
+
|
|
152
|
+
### Task (HITL or AFK)
|
|
153
|
+
Manual work unblocking a decision — signing up for service, provisioning access, moving data.
|
|
154
|
+
- This is the **only** type that does rather than decides
|
|
155
|
+
- Earns its place by unblocking a decision, not by delivering the destination
|
|
156
|
+
- Agent drives AFK tasks alone; HITL tasks get precise checklist
|
|
157
|
+
- **Label:** `wayfinder:task`
|
|
158
|
+
|
|
159
|
+
## Fog-to-Ticket Graduation
|
|
160
|
+
|
|
161
|
+
When resolving a ticket clears fog, graduate the newly-specifiable bits into fresh tickets:
|
|
162
|
+
|
|
163
|
+
1. **Identify the fog** in Not-yet-specified that the resolution illuminates
|
|
164
|
+
2. **Create new tickets** with crisp question statements
|
|
165
|
+
3. **Wire blocking edges** if the new tickets depend on each other or existing ones
|
|
166
|
+
4. **Clear from fog** — remove the graduated patch from Not-yet-specified so it lives only as its ticket
|
|
167
|
+
|
|
168
|
+
## Out-of-Scope Close Protocol
|
|
169
|
+
|
|
170
|
+
If a ticket turns out to sit past the destination:
|
|
171
|
+
|
|
172
|
+
1. **Close the ticket** — mark it resolved or won't-fix
|
|
173
|
+
2. **Add one line to Out of scope** — gist + why it's out of scope, linking the closed ticket
|
|
174
|
+
3. **Never append to Decisions so far** — scope boundaries aren't steps on the route
|
|
175
|
+
|
|
176
|
+
## Map State Transitions
|
|
177
|
+
|
|
178
|
+
| State | Meaning | Action |
|
|
179
|
+
|-------|---------|--------|
|
|
180
|
+
| **Open, unblocked, unclaimed** | Frontier — ready to take | Claim and resolve |
|
|
181
|
+
| **Open, blocked** | Waiting on something | Wait for blockers to close |
|
|
182
|
+
| **Open, claimed** | Concurrent session working | Skip for now |
|
|
183
|
+
| **Closed** | Decided — lives in Decisions so far | Reference, don't re-open |
|
|
184
|
+
|
|
185
|
+
## Concurrency
|
|
186
|
+
|
|
187
|
+
Users may run unblocked tickets in parallel, so expect the tracker to be edited concurrently. Always:
|
|
188
|
+
|
|
189
|
+
- Refresh the map before picking a ticket
|
|
190
|
+
- Claim immediately before starting work
|
|
191
|
+
- Never assume state hasn't changed since last read
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fix-bug
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: "Bug fix orchestrator — active_flow fix_bug; reads specs/bugs/BUG-*.md; chains investigate-bug, develop-tdd, validate-fix. Use when user reports a defect."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Fix Bug
|
|
8
|
+
|
|
9
|
+
**Boundary**: Orchestrator flow — chains `investigate-bug` (entry point + RCA via `diagnose-root`) → `develop-tdd` → `validate-fix`. Does not implement RCA or write bug files directly.
|
|
10
|
+
|
|
11
|
+
Orchestrates **fix_bug** flow without mixing epic build state.
|
|
12
|
+
|
|
13
|
+
> **HARD GATE** — Set `specs/state.yaml` `active_flow: fix_bug` and `bug_cycle.current_step: 1` before starting.
|
|
14
|
+
|
|
15
|
+
## Discovered gate failures (e51s04)
|
|
16
|
+
|
|
17
|
+
Valid entry **without a user-reported bug** when:
|
|
18
|
+
|
|
19
|
+
- **Preflight** or **CI** is red at kickoff or verify-work
|
|
20
|
+
- **Golden suite** or project baseline is red (`bash scripts/run-verification-gates.sh` or equivalent)
|
|
21
|
+
- A reproducible gate failure during unrelated epic work exceeds quick-fix guardrails
|
|
22
|
+
|
|
23
|
+
Create `specs/bugs/BUG-*.md` via `investigate-bug` (or inline in fix-bug step 1) describing the gate failure, then run the standard fix_bug chain.
|
|
24
|
+
|
|
25
|
+
## Five steps (`bug_cycle` in state.yaml)
|
|
26
|
+
|
|
27
|
+
| Step | Skill / action |
|
|
28
|
+
|------|----------------|
|
|
29
|
+
| 1 | `investigate-bug` — create BUG-*.md with RCA |
|
|
30
|
+
| 2 | `diagnose-root` — 4-phase root cause analysis |
|
|
31
|
+
| 3 | `develop-tdd` — red-green against bug file verify steps |
|
|
32
|
+
| 4 | `validate-fix` — re-run failing test, full suite, lint |
|
|
33
|
+
| 5 | `release-branch` — PR or solo land the fix |
|
|
34
|
+
|
|
35
|
+
### Checkpoint / resume
|
|
36
|
+
|
|
37
|
+
Track progress via `specs/state.yaml` `bug_cycle`:
|
|
38
|
+
- `bug_cycle.current_step`: current step (1–5)
|
|
39
|
+
- `bug_cycle.completed_steps`: completed step numbers
|
|
40
|
+
- `handoff.next_skill`: skill for the current step
|
|
41
|
+
- On resume, read `bug_cycle.current_step` and continue from there
|
|
42
|
+
|
|
43
|
+
## Process
|
|
44
|
+
|
|
45
|
+
1. **Step 1 — investigate-bug:** If no `specs/bugs/BUG-*.md`, run `investigate-bug` first — it handles history check, RCA (via `diagnose-root`), fix approach, and writes the bug file. Increment `bug_cycle.current_step` to 2 on completion.
|
|
46
|
+
2. **Step 2 — diagnose-root:** Run 4-phase RCA (reproduce → isolate → hypothesize → verify). Record findings in the bug file. Increment to step 3.
|
|
47
|
+
3. **Step 3 — develop-tdd:** `develop-tdd` against the bug file's verify steps. Increment to step 4 on all-green.
|
|
48
|
+
4. **Step 4 — validate-fix:** `validate-fix` — re-run failing test, full suite, typecheck, lint. Increment to step 5.
|
|
49
|
+
5. **Step 5 — release-branch:** Land the fix via `release-branch`. Clear `bug_cycle` and `active_flow` when done.
|
|
50
|
+
|
|
51
|
+
## Bug file SoT
|
|
52
|
+
|
|
53
|
+
One markdown file per bug with frontmatter:
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
---
|
|
57
|
+
bug_id: BUG-001
|
|
58
|
+
status: open
|
|
59
|
+
severity: high
|
|
60
|
+
scope: api
|
|
61
|
+
title: Short title
|
|
62
|
+
---
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Verify
|
|
66
|
+
|
|
67
|
+
→ verify: `test -d specs/bugs && test -f scripts/run-skill-verify.sh`
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gate-trace
|
|
3
|
+
model: haiku
|
|
4
|
+
description: "Deterministic traceability quality gate — reads coverage matrix + blind-spot data, applies decision rules with oracle confidence downgrade, emits PASS/CONCERNS/FAIL/WAIVED verdict. Use before release-branch to gate merges on traceability."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Gate Trace
|
|
8
|
+
|
|
9
|
+
Deterministic quality gate that combines traceability coverage and blind-spot data into a single PASS/FAIL/CONCERNS/WAIVED decision before release.
|
|
10
|
+
|
|
11
|
+
## Decision Rules
|
|
12
|
+
|
|
13
|
+
| Rule | Condition | Verdict |
|
|
14
|
+
|------|-----------|---------|
|
|
15
|
+
| R1 | Any undone story with 0 code tags | FAIL |
|
|
16
|
+
| R2 | Any story done but no verify evidence | CONCERNS |
|
|
17
|
+
| R3 | P0 story (top WSJF quartile) with 0% coverage | FAIL |
|
|
18
|
+
| R4 | Overall coverage < 60% | CONCERNS |
|
|
19
|
+
| R6 | P0 story + eNN-TEST_PLAN_LATEST.md exists + zero SC-eNNsYY-P0-* in test files | CONCERNS |
|
|
20
|
+
| R5 | Overall ≥ 80% + no critical gaps + all verify → PASS | PASS |
|
|
21
|
+
|
|
22
|
+
## Oracle Confidence Downgrade
|
|
23
|
+
|
|
24
|
+
TEA-inspired: if trace links rely on heuristics rather than explicit tags, confidence drops.
|
|
25
|
+
|
|
26
|
+
| Heuristic Ratio | Downgrade |
|
|
27
|
+
|-----------------|-----------|
|
|
28
|
+
| > 50% links from heuristics (file-name or task-reference) | One level (PASS→CONCERNS, CONCERNS→FAIL) |
|
|
29
|
+
| > 80% links from heuristics | Two levels (PASS→FAIL, CONCERNS→FAIL) |
|
|
30
|
+
|
|
31
|
+
## Process
|
|
32
|
+
|
|
33
|
+
1. **Pre-flight:** Ensure `scripts/trace-stories.sh --json` has been run (produces `specs/traceability-matrix.json`). If not present, run it.
|
|
34
|
+
2. Ensure `scripts/check-blind-spots.sh` has been run (produces `specs/blind-spots.json`). If not present, run it.
|
|
35
|
+
3. Read `specs/traceability-matrix.json` and `specs/blind-spots.json`.
|
|
36
|
+
4. Apply decision rules R1–R5 in order (first match wins).
|
|
37
|
+
5. Apply oracle confidence downgrade based on the heuristic link ratio from the matrix's `oracle_stats`.
|
|
38
|
+
6. **Drift check (e39s03):** If `specs/drift-report.json` exists and has suspect links, mark verdict as CONCERNS with note: "Drift detected — some implementing files are newer than their specs. Run scripts/check-spec-drift.sh for details."
|
|
39
|
+
7. Output verdict + rationale to stdout.
|
|
40
|
+
8. **Adversarial refute check (e45s32):** Before emitting PASS, attempt to **refute** the verdict — list at least one concrete traceability gap that would block merge if it were real. If the gap is real, downgrade the verdict. Rubber-stamping is prohibited; every PASS must survive one refutation attempt.
|
|
41
|
+
9. **Completeness critic (e45s05)** — Run adversarial gap-finding:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
bash scripts/lib/completeness-critic.sh
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Classify output as **BLOCKER / WARNING / FILLED**. **BLOCKER overrides any PASS verdict → FAIL.** Append critic summary to rationale.
|
|
48
|
+
10. Update `specs/execution-status.yaml` with gate-trace result.
|
|
49
|
+
|
|
50
|
+
## Verdict Semantics
|
|
51
|
+
|
|
52
|
+
| Verdict | Meaning | Action |
|
|
53
|
+
|---------|---------|--------|
|
|
54
|
+
| PASS | All gates satisfied | Proceed with merge |
|
|
55
|
+
| CONCERNS | Non-critical issues found | Requires explicit human override in `state.yaml` |
|
|
56
|
+
| FAIL | Critical traceability gap | Block merge — fix gap first |
|
|
57
|
+
| WAIVED | Cannot evaluate (missing inputs) | Skip gate — data not available |
|
|
58
|
+
|
|
59
|
+
## Output Format
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
gate_trace:
|
|
63
|
+
verdict: PASS|CONCERNS|FAIL|WAIVED
|
|
64
|
+
generated_at: "<ISO 8601>"
|
|
65
|
+
rationale: "<human-readable explanation>"
|
|
66
|
+
heuristic_ratio: <0.0–1.0>
|
|
67
|
+
downgrade_applied: <true|false>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Integration Points
|
|
71
|
+
|
|
72
|
+
- **release-branch SKILL.md** — pre-PR gate (FAIL blocks merge).
|
|
73
|
+
- **sync-skills.yml** — runs `trace-stories.sh --strict` as its "Traceability gate" step (FAIL
|
|
74
|
+
blocks pipeline), which shares this skill's coverage data (`traceability-matrix.json`) but
|
|
75
|
+
does not invoke a gate-trace PASS/CONCERNS/FAIL/WAIVED verdict directly.
|
|
76
|
+
- **verify-work SKILL.md** — runs blind-spot checks; gate-trace consumes the result.
|
|
77
|
+
|
|
78
|
+
## References
|
|
79
|
+
|
|
80
|
+
- BMAD TEA traceability approach (market survey 2026-07-02).
|
|
81
|
+
- scripts/trace-stories.sh (e38s01) — produces traceability-matrix.json.
|
|
82
|
+
- scripts/check-blind-spots.sh (e38s04) — produces blind-spots.json.
|
|
83
|
+
- specs/execution-status.yaml — output target for gate result.
|
|
84
|
+
|
|
85
|
+
## Handoff
|
|
86
|
+
|
|
87
|
+
Gate: READY → next: release-branch (final step before merge)
|
|
88
|
+
Writes: state.yaml handoff.next_skill = release-branch
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: generate-allure-report
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: "Generate Allure-ready reports from bigpowers YAML metadata. Reads execution-status.yaml, release-plan.yaml, epic capsules, task YAMLs, cycle-times.yaml, and bug registry to produce allure-results/junit-results.xml, categories.json, and executor.json. Use when preparing progress dashboards, integrating with Allure TestOps, or generating CI reports."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Generate Allure Report
|
|
8
|
+
|
|
9
|
+
Generate Allure TestOps-compatible reports from bigpowers project metadata. Produces JUnit XML for story-level test results, custom categories for filtering, and executor metadata — all in the `allure-results/` directory.
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
bash scripts/generate-allure-report.sh
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## What It Produces
|
|
18
|
+
|
|
19
|
+
Three files in `allure-results/`:
|
|
20
|
+
|
|
21
|
+
| File | Description |
|
|
22
|
+
|------|-------------|
|
|
23
|
+
| `junit-results.xml` | One `<testcase>` per story with `<properties>` for risk, security, WSJF, tier, wave, and status. Incomplete stories get a `<failure>` element. |
|
|
24
|
+
| `categories.json` | Custom Allure categories for filtering by epic, risk level (P0), and security reviews. |
|
|
25
|
+
| `executor.json` | Build metadata — name, type, version from release-plan.yaml, build order. |
|
|
26
|
+
|
|
27
|
+
## Data Sources
|
|
28
|
+
|
|
29
|
+
See [REFERENCE.md](REFERENCE.md)
|
|
30
|
+
|
|
31
|
+
## Verify
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
test -f allure-results/junit-results.xml && test -f allure-results/categories.json && test -f allure-results/executor.json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Handoff
|
|
38
|
+
|
|
39
|
+
- next_skill: null (terminal skill — no downstream workflow step)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# generate-allure-report — Reference
|
|
44
|
+
|
|
45
|
+
## Data Sources
|
|
46
|
+
|
|
47
|
+
The script reads five YAML sources from the project:
|
|
48
|
+
|
|
49
|
+
| Source | Path | Fields Used |
|
|
50
|
+
|--------|------|-------------|
|
|
51
|
+
| Execution status | `specs/execution-status.yaml` | `epics`, `stories`, `development_status` |
|
|
52
|
+
| Release plan | `specs/release-plan.yaml` | `release.version`, `release.status`, `bugs` summary |
|
|
53
|
+
| Epic capsules | `specs/epics/**/epic.yaml` + `-tasks.yaml` | Epic metadata, task pass/fail counts |
|
|
54
|
+
| Cycle times | `specs/metrics/cycle-times.yaml` | Story-level `cycle_minutes`, `bcp_per_hour`, `source` |
|
|
55
|
+
| Bug registry | `specs/bugs/registry.yaml` | Bug counts by status and severity |
|
|
56
|
+
|
|
57
|
+
## Script Body
|
|
58
|
+
|
|
59
|
+
`scripts/generate-allure-report.sh`:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
#!/usr/bin/env bash
|
|
63
|
+
set -euo pipefail
|
|
64
|
+
source "$(dirname "${BASH_SOURCE[0]}")/lib/python-env.sh"
|
|
65
|
+
ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" || ROOT="$(dirname "${BASH_SOURCE[0]}")/.."
|
|
66
|
+
|
|
67
|
+
mkdir -p "$ROOT/allure-results"
|
|
68
|
+
|
|
69
|
+
$PYTHON - "$ROOT" <<'PY'
|
|
70
|
+
import json
|
|
71
|
+
import sys
|
|
72
|
+
import xml.etree.ElementTree as ET
|
|
73
|
+
from pathlib import Path
|
|
74
|
+
|
|
75
|
+
root = Path(sys.argv[1])
|
|
76
|
+
out = root / "allure-results"
|
|
77
|
+
|
|
78
|
+
# 1. Read execution-status.yaml
|
|
79
|
+
exec_status_file = root / "specs" / "execution-status.yaml"
|
|
80
|
+
release_plan_file = root / "specs" / "release-plan.yaml"
|
|
81
|
+
cycle_times_file = root / "specs" / "metrics" / "cycle-times.yaml"
|
|
82
|
+
bugs_registry_file = root / "specs" / "bugs" / "registry.yaml"
|
|
83
|
+
|
|
84
|
+
sys.path.insert(0, str(root / "scripts" / "lib"))
|
|
85
|
+
from simple_yaml import parse_simple_yaml
|
|
86
|
+
|
|
87
|
+
exec_status = parse_simple_yaml(exec_status_file.read_text()) if exec_status_file.exists() else {}
|
|
88
|
+
release_plan = parse_simple_yaml(release_plan_file.read_text()) if release_plan_file.exists() else {}
|
|
89
|
+
cycle_times = parse_simple_yaml(cycle_times_file.read_text()) if cycle_times_file.exists() else {"stories": []}
|
|
90
|
+
bugs_registry = parse_simple_yaml(bugs_registry_file.read_text()) if bugs_registry_file.exists() else {"bugs": []}
|
|
91
|
+
|
|
92
|
+
# Build cycle-times lookup
|
|
93
|
+
ct_lookup = {}
|
|
94
|
+
for ct in cycle_times.get("stories", []):
|
|
95
|
+
if isinstance(ct, dict):
|
|
96
|
+
ct_lookup[ct.get("id", "")] = ct
|
|
97
|
+
|
|
98
|
+
# 2. Build JUnit XML
|
|
99
|
+
stories = exec_status.get("stories", {})
|
|
100
|
+
|
|
101
|
+
# Counts for testsuite attributes
|
|
102
|
+
total_stories = len(stories)
|
|
103
|
+
incomplete = sum(1 for s in stories.values() if isinstance(s, dict) and s.get("status") != "done")
|
|
104
|
+
|
|
105
|
+
testsuite = ET.Element("testsuite", {
|
|
106
|
+
"name": "bigpowers-epic-progress",
|
|
107
|
+
"tests": str(total_stories),
|
|
108
|
+
"failures": str(incomplete),
|
|
109
|
+
"errors": "0",
|
|
110
|
+
"skipped": "0",
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
for story_id in sorted(stories.keys()):
|
|
114
|
+
story = stories[story_id]
|
|
115
|
+
if not isinstance(story, dict):
|
|
116
|
+
continue
|
|
117
|
+
|
|
118
|
+
epic_id = story.get("epic", "unknown")
|
|
119
|
+
title = story.get("title", story_id)
|
|
120
|
+
bcps = story.get("bcps", 0)
|
|
121
|
+
status = story.get("status", "backlog")
|
|
122
|
+
risk_max = story.get("risk_max", "none")
|
|
123
|
+
security_max = story.get("security_max", "none")
|
|
124
|
+
|
|
125
|
+
# Enrich with cycle-times data
|
|
126
|
+
ct_data = ct_lookup.get(story_id, {})
|
|
127
|
+
cycle_minutes = ct_data.get("cycle_minutes", 0)
|
|
128
|
+
bcp_per_hour = ct_data.get("bcp_per_hour", 0)
|
|
129
|
+
|
|
130
|
+
# Time: cycle_minutes * 60 for seconds in Allure display
|
|
131
|
+
time_seconds = cycle_minutes * 60.0 if cycle_minutes else 0.0
|
|
132
|
+
|
|
133
|
+
testcase = ET.SubElement(testsuite, "testcase", {
|
|
134
|
+
"classname": epic_id,
|
|
135
|
+
"name": f"{story_id}: {title}",
|
|
136
|
+
"time": str(round(time_seconds, 3)),
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
props = ET.SubElement(testcase, "properties")
|
|
140
|
+
ET.SubElement(props, "property", {"name": "risk", "value": risk_max})
|
|
141
|
+
ET.SubElement(props, "property", {"name": "security", "value": security_max})
|
|
142
|
+
ET.SubElement(props, "property", {"name": "bcps", "value": str(bcps)})
|
|
143
|
+
ET.SubElement(props, "property", {"name": "status", "value": status})
|
|
144
|
+
ET.SubElement(props, "property", {"name": "bcp_per_hour", "value": str(bcp_per_hour)})
|
|
145
|
+
ET.SubElement(props, "property", {"name": "lead_time_minutes", "value": str(cycle_minutes)})
|
|
146
|
+
|
|
147
|
+
if status != "done":
|
|
148
|
+
ET.SubElement(testcase, "failure", {
|
|
149
|
+
"message": f"Story {story_id} is {status} [risk={risk_max}, security={security_max}]",
|
|
150
|
+
"type": "StoryIncomplete"
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
tree = ET.ElementTree(testsuite)
|
|
154
|
+
ET.indent(tree, space=" ")
|
|
155
|
+
tree.write(str(out / "junit-results.xml"), encoding="utf-8", xml_declaration=True)
|
|
156
|
+
|
|
157
|
+
# 3. Build categories.json
|
|
158
|
+
epics = exec_status.get("epics", {})
|
|
159
|
+
categories = []
|
|
160
|
+
|
|
161
|
+
for epic_id in sorted(epics.keys()):
|
|
162
|
+
epic = epics[epic_id]
|
|
163
|
+
if isinstance(epic, dict) and epic.get("status") != "done":
|
|
164
|
+
categories.append({
|
|
165
|
+
"name": f"Epic: {epic.get('title', epic_id)}",
|
|
166
|
+
"matchedStatuses": ["failed"],
|
|
167
|
+
"messageRegex": f".*{epic_id}:.*"
|
|
168
|
+
})
|
|
169
|
+
|
|
170
|
+
categories.append({
|
|
171
|
+
"name": "P0 Risk",
|
|
172
|
+
"matchedStatuses": ["failed"],
|
|
173
|
+
"messageRegex": ".*risk.*P0.*"
|
|
174
|
+
})
|
|
175
|
+
categories.append({
|
|
176
|
+
"name": "Security Review",
|
|
177
|
+
"matchedStatuses": ["failed"],
|
|
178
|
+
"messageRegex": ".*security.*(?:medium|high).*"
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
# Add bug-based categories
|
|
182
|
+
bug_list = bugs_registry.get("bugs", [])
|
|
183
|
+
bug_count = len(bug_list) if isinstance(bug_list, list) else 0
|
|
184
|
+
open_bugs = sum(1 for b in bug_list if isinstance(b, dict) and b.get("status") not in ("fixed", "closed", None))
|
|
185
|
+
if open_bugs > 0:
|
|
186
|
+
categories.append({
|
|
187
|
+
"name": "Open Bugs",
|
|
188
|
+
"matchedStatuses": ["failed"],
|
|
189
|
+
"messageRegex": ".*Bug.*"
|
|
190
|
+
})
|
|
191
|
+
|
|
192
|
+
(out / "categories.json").write_text(json.dumps(categories, indent=2))
|
|
193
|
+
|
|
194
|
+
# 4. Build executor.json
|
|
195
|
+
rl = release_plan.get("release", {}) if isinstance(release_plan.get("release"), dict) else {}
|
|
196
|
+
executor = {
|
|
197
|
+
"name": "bigpowers",
|
|
198
|
+
"type": "bigpowers",
|
|
199
|
+
"buildName": rl.get("version", "unknown") if isinstance(rl, dict) else "unknown",
|
|
200
|
+
"buildOrder": len(exec_status.get("development_status", {})),
|
|
201
|
+
}
|
|
202
|
+
(out / "executor.json").write_text(json.dumps(executor, indent=2))
|
|
203
|
+
|
|
204
|
+
# Summary
|
|
205
|
+
epic_count = len([e for e in epics.values() if isinstance(e, dict) and e.get("status") == "done"])
|
|
206
|
+
total_epics = len(epics)
|
|
207
|
+
print(f"generate-allure-report: {total_stories} stories, {epic_count}/{total_epics} epics done, {bug_count} bugs")
|
|
208
|
+
print(f" -> {out}/junit-results.xml")
|
|
209
|
+
print(f" -> {out}/categories.json")
|
|
210
|
+
print(f" -> {out}/executor.json")
|
|
211
|
+
PY
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## JUnit XML Schema
|
|
215
|
+
|
|
216
|
+
```xml
|
|
217
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
218
|
+
<testsuite name="bigpowers-epic-progress" tests="N" failures="F" errors="0" skipped="0">
|
|
219
|
+
<testcase classname="e01" name="e01s01: Security slopcheck tags" time="0.75">
|
|
220
|
+
<properties>
|
|
221
|
+
<property name="risk" value="none"/>
|
|
222
|
+
<property name="security" value="none"/>
|
|
223
|
+
<property name="bcps" value="1"/>
|
|
224
|
+
<property name="status" value="done"/>
|
|
225
|
+
<property name="bcp_per_hour" value="1.3"/>
|
|
226
|
+
<property name="lead_time_minutes" value="45"/>
|
|
227
|
+
</properties>
|
|
228
|
+
</testcase>
|
|
229
|
+
<testcase classname="e01" name="e01s99: Some incomplete story" time="0.0">
|
|
230
|
+
<properties>...</properties>
|
|
231
|
+
<failure message="Story e01s99 is backlog [risk=P0, security=high]" type="StoryIncomplete"/>
|
|
232
|
+
</testcase>
|
|
233
|
+
</testsuite>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Categories JSON Schema
|
|
237
|
+
|
|
238
|
+
```json
|
|
239
|
+
[
|
|
240
|
+
{
|
|
241
|
+
"name": "Epic: Quality Core - Skill Hardening",
|
|
242
|
+
"matchedStatuses": ["failed"],
|
|
243
|
+
"messageRegex": ".*e45:.*"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "P0 Risk",
|
|
247
|
+
"matchedStatuses": ["failed"],
|
|
248
|
+
"messageRegex": ".*risk.*P0.*"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"name": "Security Review",
|
|
252
|
+
"matchedStatuses": ["failed"],
|
|
253
|
+
"messageRegex": ".*security.*(?:medium|high).*"
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Executor JSON Schema
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"name": "bigpowers",
|
|
263
|
+
"type": "bigpowers",
|
|
264
|
+
"buildName": "2.76.2",
|
|
265
|
+
"buildOrder": 400
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## Example Usage
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# Generate reports
|
|
273
|
+
bash scripts/generate-allure-report.sh
|
|
274
|
+
|
|
275
|
+
# Verify output
|
|
276
|
+
test -f allure-results/junit-results.xml && echo "JUnit OK"
|
|
277
|
+
test -f allure-results/categories.json && echo "Categories OK"
|
|
278
|
+
test -f allure-results/executor.json && echo "Executor OK"
|
|
279
|
+
|
|
280
|
+
# Serve with Allure
|
|
281
|
+
allure serve allure-results/
|
|
282
|
+
|
|
283
|
+
# Or open the Allure TestOps UI
|
|
284
|
+
allure open allure-results/
|
|
285
|
+
```
|