xcoder-dna 0.0.0-stage → 1.3.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/LICENSE +66 -0
- package/README.md +87 -2
- package/dist/agents/ai-chat-debate.d.ts +36 -0
- package/dist/agents/ai-chat-debate.js +300 -0
- package/dist/agents/ai-chat-report-writer.d.ts +7 -0
- package/dist/agents/ai-chat-report-writer.js +100 -0
- package/dist/agents/duplicate-detector.d.ts +41 -0
- package/dist/agents/duplicate-detector.js +65 -0
- package/dist/agents/genesis-agent.d.ts +61 -0
- package/dist/agents/genesis-agent.js +340 -0
- package/dist/agents/samurai-agent.d.ts +53 -0
- package/dist/agents/samurai-agent.js +279 -0
- package/dist/agents/sub-agent.d.ts +56 -0
- package/dist/agents/sub-agent.js +353 -0
- package/dist/backlog/backlog-requirement-validator.d.ts +10 -0
- package/dist/backlog/backlog-requirement-validator.js +60 -0
- package/dist/backlog/backlog-store.d.ts +29 -0
- package/dist/backlog/backlog-store.js +148 -0
- package/dist/backlog/po-agent.d.ts +16 -0
- package/dist/backlog/po-agent.js +121 -0
- package/dist/backlog/types.d.ts +25 -0
- package/dist/backlog/types.js +4 -0
- package/dist/bench/run.d.ts +11 -0
- package/dist/bench/run.js +185 -0
- package/dist/bench/types.d.ts +50 -0
- package/dist/bench/types.js +1 -0
- package/dist/cli/swarm.d.ts +10 -0
- package/dist/cli/swarm.js +100 -0
- package/dist/cli/task.d.ts +14 -0
- package/dist/cli/task.js +121 -0
- package/dist/cli/wbc-arg.d.ts +6 -0
- package/dist/cli/wbc-arg.js +40 -0
- package/dist/cli/wbc.d.ts +45 -0
- package/dist/cli/wbc.js +98 -0
- package/dist/commands/license.d.ts +9 -0
- package/dist/commands/license.js +140 -0
- package/dist/commands/release.d.ts +44 -0
- package/dist/commands/release.js +180 -0
- package/dist/commands/test.d.ts +50 -0
- package/dist/commands/test.js +385 -0
- package/dist/config/loadConfig.d.ts +82 -0
- package/dist/config/loadConfig.js +240 -0
- package/dist/config/secure-mode.d.ts +29 -0
- package/dist/config/secure-mode.js +63 -0
- package/dist/config/user-config.d.ts +39 -0
- package/dist/config/user-config.js +202 -0
- package/dist/engine/reasoning-engine.d.ts +21 -0
- package/dist/engine/reasoning-engine.js +59 -0
- package/dist/events/bus.d.ts +22 -0
- package/dist/events/bus.js +18 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.js +77 -0
- package/dist/indexing/ignoreRules.d.ts +1 -0
- package/dist/indexing/ignoreRules.js +53 -0
- package/dist/instance-swarm/instance-swarm-orchestrator.d.ts +57 -0
- package/dist/instance-swarm/instance-swarm-orchestrator.js +204 -0
- package/dist/instance-swarm/protocol-name-resolver.d.ts +23 -0
- package/dist/instance-swarm/protocol-name-resolver.js +64 -0
- package/dist/license/gate.d.ts +31 -0
- package/dist/license/gate.js +188 -0
- package/dist/license/http-client.d.ts +43 -0
- package/dist/license/http-client.js +195 -0
- package/dist/license/manager.d.ts +39 -0
- package/dist/license/manager.js +175 -0
- package/dist/license/receipt.d.ts +27 -0
- package/dist/license/receipt.js +108 -0
- package/dist/license/state-codec.d.ts +72 -0
- package/dist/license/state-codec.js +218 -0
- package/dist/license/state-paths.d.ts +17 -0
- package/dist/license/state-paths.js +64 -0
- package/dist/license/store.d.ts +44 -0
- package/dist/license/store.js +223 -0
- package/dist/license/trust-anchor.d.ts +24 -0
- package/dist/license/trust-anchor.js +74 -0
- package/dist/license/types.d.ts +34 -0
- package/dist/license/types.js +19 -0
- package/dist/llm/budget.d.ts +23 -0
- package/dist/llm/budget.js +58 -0
- package/dist/llm/client.d.ts +53 -0
- package/dist/llm/client.js +122 -0
- package/dist/llm/factory.d.ts +14 -0
- package/dist/llm/factory.js +32 -0
- package/dist/orchestrator/defect-logger.d.ts +31 -0
- package/dist/orchestrator/defect-logger.js +101 -0
- package/dist/orchestrator/defect-manager.d.ts +118 -0
- package/dist/orchestrator/defect-manager.js +338 -0
- package/dist/orchestrator/defect-migration.d.ts +14 -0
- package/dist/orchestrator/defect-migration.js +174 -0
- package/dist/orchestrator/defect-store.d.ts +48 -0
- package/dist/orchestrator/defect-store.js +76 -0
- package/dist/orchestrator/healing.d.ts +14 -0
- package/dist/orchestrator/healing.js +11 -0
- package/dist/orchestrator/interactive-steering.d.ts +64 -0
- package/dist/orchestrator/interactive-steering.js +107 -0
- package/dist/orchestrator/interrupt-handler.d.ts +30 -0
- package/dist/orchestrator/interrupt-handler.js +70 -0
- package/dist/orchestrator/lesson-manager.d.ts +25 -0
- package/dist/orchestrator/lesson-manager.js +122 -0
- package/dist/orchestrator/progress-summary.d.ts +15 -0
- package/dist/orchestrator/progress-summary.js +106 -0
- package/dist/orchestrator/reasoning-score.d.ts +49 -0
- package/dist/orchestrator/reasoning-score.js +117 -0
- package/dist/orchestrator/swarm.d.ts +36 -0
- package/dist/orchestrator/swarm.js +77 -0
- package/dist/orchestrator/task-factory.d.ts +15 -0
- package/dist/orchestrator/task-factory.js +176 -0
- package/dist/orchestrator/validation-gate.d.ts +23 -0
- package/dist/orchestrator/validation-gate.js +155 -0
- package/dist/protocol/react-contract.d.ts +136 -0
- package/dist/protocol/react-contract.js +698 -0
- package/dist/protocol/wks-protocol-manager.d.ts +22 -0
- package/dist/protocol/wks-protocol-manager.js +72 -0
- package/dist/sdlc-runtime/conversation-runner.d.ts +8 -0
- package/dist/sdlc-runtime/conversation-runner.js +64 -0
- package/dist/sdlc-runtime/dag-utils.d.ts +15 -0
- package/dist/sdlc-runtime/dag-utils.js +67 -0
- package/dist/sdlc-runtime/defect-integration.d.ts +7 -0
- package/dist/sdlc-runtime/defect-integration.js +99 -0
- package/dist/sdlc-runtime/execution-loop.d.ts +38 -0
- package/dist/sdlc-runtime/execution-loop.js +274 -0
- package/dist/sdlc-runtime/lesson-recorder.d.ts +9 -0
- package/dist/sdlc-runtime/lesson-recorder.js +27 -0
- package/dist/sdlc-runtime/plan-initializer.d.ts +47 -0
- package/dist/sdlc-runtime/plan-initializer.js +135 -0
- package/dist/sdlc-runtime/progress-persister.d.ts +10 -0
- package/dist/sdlc-runtime/progress-persister.js +34 -0
- package/dist/sdlc-runtime/protocol-loader.d.ts +10 -0
- package/dist/sdlc-runtime/protocol-loader.js +21 -0
- package/dist/sdlc-runtime/reporting.d.ts +24 -0
- package/dist/sdlc-runtime/reporting.js +68 -0
- package/dist/sdlc-runtime/sdlc-orchestrator.d.ts +59 -0
- package/dist/sdlc-runtime/sdlc-orchestrator.js +170 -0
- package/dist/sdlc-runtime/sdlc-skill.d.ts +44 -0
- package/dist/sdlc-runtime/sdlc-skill.js +148 -0
- package/dist/sdlc-runtime/steering-handler.d.ts +14 -0
- package/dist/sdlc-runtime/steering-handler.js +51 -0
- package/dist/sdlc-runtime/trace-recorder.d.ts +10 -0
- package/dist/sdlc-runtime/trace-recorder.js +7 -0
- package/dist/security/index.d.ts +16 -0
- package/dist/security/index.js +12 -0
- package/dist/security/input-screen.d.ts +30 -0
- package/dist/security/input-screen.js +75 -0
- package/dist/security/tool-call-guard.d.ts +16 -0
- package/dist/security/tool-call-guard.js +163 -0
- package/dist/security/untrusted-content.d.ts +34 -0
- package/dist/security/untrusted-content.js +63 -0
- package/dist/skills/advanced-dfir/SKILL.md +85 -0
- package/dist/skills/advanced-pentest-lab/SKILL.md +88 -0
- package/dist/skills/analyst/SKILL.md +55 -0
- package/dist/skills/architect/SKILL.md +54 -0
- package/dist/skills/aws/SKILL.md +92 -0
- package/dist/skills/azure/SKILL.md +90 -0
- package/dist/skills/bylaw-context.d.ts +45 -0
- package/dist/skills/bylaw-context.js +61 -0
- package/dist/skills/bylaw-review.d.ts +20 -0
- package/dist/skills/bylaw-review.js +101 -0
- package/dist/skills/conversation/SKILL.md +29 -0
- package/dist/skills/design-patterns/SKILL.md +190 -0
- package/dist/skills/devops/SKILL.md +55 -0
- package/dist/skills/directives.d.ts +20 -0
- package/dist/skills/directives.js +313 -0
- package/dist/skills/docker/SKILL.md +76 -0
- package/dist/skills/docker-expert/SKILL.md +56 -0
- package/dist/skills/enterprise-systems-analyst/SKILL.md +83 -0
- package/dist/skills/enterprise-systems-analyst/references/crm.md +41 -0
- package/dist/skills/enterprise-systems-analyst/references/erp.md +40 -0
- package/dist/skills/enterprise-systems-analyst/references/financial-systems.md +35 -0
- package/dist/skills/enterprise-systems-analyst/references/hcm.md +38 -0
- package/dist/skills/enterprise-systems-analyst/references/mrp.md +37 -0
- package/dist/skills/enterprise-systems-analyst/references/scm.md +32 -0
- package/dist/skills/ethical-hacking-methodology/SKILL.md +119 -0
- package/dist/skills/externalSkillLoader.d.ts +25 -0
- package/dist/skills/externalSkillLoader.js +65 -0
- package/dist/skills/externalSkillRegistry.d.ts +33 -0
- package/dist/skills/externalSkillRegistry.js +94 -0
- package/dist/skills/filesystem-management/SKILL.md +61 -0
- package/dist/skills/first-run-seed.d.ts +26 -0
- package/dist/skills/first-run-seed.js +75 -0
- package/dist/skills/git-vcs/SKILL.md +84 -0
- package/dist/skills/kafka/SKILL.md +89 -0
- package/dist/skills/kubernetes/SKILL.md +93 -0
- package/dist/skills/kubernetes-expert/SKILL.md +54 -0
- package/dist/skills/openshift/SKILL.md +93 -0
- package/dist/skills/pentester/SKILL.md +59 -0
- package/dist/skills/performance-tester/SKILL.md +57 -0
- package/dist/skills/playwright-ui-tester/SKILL.md +67 -0
- package/dist/skills/programmer/SKILL.md +58 -0
- package/dist/skills/project-scaffolding/SKILL.md +133 -0
- package/dist/skills/qa-engineer/SKILL.md +91 -0
- package/dist/skills/rca/SKILL.md +58 -0
- package/dist/skills/redhat/SKILL.md +92 -0
- package/dist/skills/rosa/SKILL.md +80 -0
- package/dist/skills/scrum-framework/SKILL.md +74 -0
- package/dist/skills/scrum-framework/references/artifacts_and_quality.md +79 -0
- package/dist/skills/scrum-framework/references/roles_and_events.md +105 -0
- package/dist/skills/scrum-master-agent/SKILL.md +74 -0
- package/dist/skills/scrum-master-agent/references/behaviors.md +56 -0
- package/dist/skills/sdlc-skill.d.ts +1 -0
- package/dist/skills/sdlc-skill.js +4 -0
- package/dist/skills/secops/SKILL.md +52 -0
- package/dist/skills/secure-architect.bylaws.d.ts +68 -0
- package/dist/skills/secure-architect.bylaws.js +525 -0
- package/dist/skills/seed-skills.d.ts +48 -0
- package/dist/skills/seed-skills.js +213 -0
- package/dist/skills/skill-authoring/SKILL.md +123 -0
- package/dist/skills/skill-header.d.ts +51 -0
- package/dist/skills/skill-header.js +163 -0
- package/dist/skills/skill-path-guard.d.ts +41 -0
- package/dist/skills/skill-path-guard.js +95 -0
- package/dist/skills/skillRouter.d.ts +51 -0
- package/dist/skills/skillRouter.js +90 -0
- package/dist/skills/skills-root.d.ts +64 -0
- package/dist/skills/skills-root.js +168 -0
- package/dist/skills/software-architect/SKILL.md +77 -0
- package/dist/skills/software-engineer/SKILL.md +74 -0
- package/dist/skills/solid-principles/SKILL.md +94 -0
- package/dist/skills/task-planning/SKILL.md +115 -0
- package/dist/skills/tester/SKILL.md +54 -0
- package/dist/skills/ubuntu/SKILL.md +87 -0
- package/dist/skills/ui-ux-design/SKILL.md +114 -0
- package/dist/skills/workspace-context/SKILL.md +103 -0
- package/dist/sprint/controller.d.ts +37 -0
- package/dist/sprint/controller.js +220 -0
- package/dist/sprint/dag-builder.d.ts +14 -0
- package/dist/sprint/dag-builder.js +105 -0
- package/dist/sprint/reporter.d.ts +11 -0
- package/dist/sprint/reporter.js +97 -0
- package/dist/sprint/state-store.d.ts +10 -0
- package/dist/sprint/state-store.js +71 -0
- package/dist/sprint/types.d.ts +24 -0
- package/dist/sprint/types.js +4 -0
- package/dist/store/file-version-store.d.ts +24 -0
- package/dist/store/file-version-store.js +73 -0
- package/dist/store/task-store.d.ts +90 -0
- package/dist/store/task-store.js +166 -0
- package/dist/task-ingest/architect-detailer.d.ts +43 -0
- package/dist/task-ingest/architect-detailer.js +141 -0
- package/dist/task-ingest/detail-schema.d.ts +9 -0
- package/dist/task-ingest/detail-schema.js +195 -0
- package/dist/task-ingest/detailed-run.d.ts +36 -0
- package/dist/task-ingest/detailed-run.js +108 -0
- package/dist/task-ingest/extract-id.d.ts +9 -0
- package/dist/task-ingest/extract-id.js +24 -0
- package/dist/task-ingest/index.d.ts +23 -0
- package/dist/task-ingest/index.js +14 -0
- package/dist/task-ingest/ingest.d.ts +45 -0
- package/dist/task-ingest/ingest.js +163 -0
- package/dist/task-ingest/list-ingested.d.ts +13 -0
- package/dist/task-ingest/list-ingested.js +30 -0
- package/dist/task-ingest/pending-filter.d.ts +30 -0
- package/dist/task-ingest/pending-filter.js +59 -0
- package/dist/task-ingest/scanner.d.ts +56 -0
- package/dist/task-ingest/scanner.js +216 -0
- package/dist/task-ingest/source-reader.d.ts +25 -0
- package/dist/task-ingest/source-reader.js +93 -0
- package/dist/task-ingest/spec-builder.d.ts +34 -0
- package/dist/task-ingest/spec-builder.js +89 -0
- package/dist/task-ingest/wbs-extract.d.ts +50 -0
- package/dist/task-ingest/wbs-extract.js +226 -0
- package/dist/task-ingest/wbs-parser.d.ts +36 -0
- package/dist/task-ingest/wbs-parser.js +170 -0
- package/dist/tools/apiTestTool.d.ts +37 -0
- package/dist/tools/apiTestTool.js +128 -0
- package/dist/tools/ast-tools.d.ts +183 -0
- package/dist/tools/ast-tools.js +853 -0
- package/dist/tools/browse-tool.d.ts +105 -0
- package/dist/tools/browse-tool.js +394 -0
- package/dist/tools/credential.d.ts +17 -0
- package/dist/tools/credential.js +32 -0
- package/dist/tools/dependency-graph.d.ts +23 -0
- package/dist/tools/dependency-graph.js +164 -0
- package/dist/tools/edit-tool.d.ts +34 -0
- package/dist/tools/edit-tool.js +95 -0
- package/dist/tools/file-header-manager.d.ts +27 -0
- package/dist/tools/file-header-manager.js +153 -0
- package/dist/tools/fs-tools.d.ts +154 -0
- package/dist/tools/fs-tools.js +337 -0
- package/dist/tools/git-tools.d.ts +79 -0
- package/dist/tools/git-tools.js +348 -0
- package/dist/tools/github-tool.d.ts +48 -0
- package/dist/tools/github-tool.js +147 -0
- package/dist/tools/globTool.d.ts +20 -0
- package/dist/tools/globTool.js +34 -0
- package/dist/tools/grepTool.d.ts +19 -0
- package/dist/tools/grepTool.js +44 -0
- package/dist/tools/index-freshness.d.ts +58 -0
- package/dist/tools/index-freshness.js +190 -0
- package/dist/tools/index-glob.d.ts +48 -0
- package/dist/tools/index-glob.js +175 -0
- package/dist/tools/load-skill-tool.d.ts +15 -0
- package/dist/tools/load-skill-tool.js +114 -0
- package/dist/tools/patch-tools.d.ts +58 -0
- package/dist/tools/patch-tools.js +153 -0
- package/dist/tools/playwright-tool.d.ts +66 -0
- package/dist/tools/playwright-tool.js +121 -0
- package/dist/tools/project-detect.d.ts +20 -0
- package/dist/tools/project-detect.js +87 -0
- package/dist/tools/prompt-guidance.d.ts +22 -0
- package/dist/tools/prompt-guidance.js +23 -0
- package/dist/tools/scheduleTool.d.ts +19 -0
- package/dist/tools/scheduleTool.js +181 -0
- package/dist/tools/search-tools.d.ts +27 -0
- package/dist/tools/search-tools.js +78 -0
- package/dist/tools/sed-tool.d.ts +66 -0
- package/dist/tools/sed-tool.js +402 -0
- package/dist/tools/shell-result.d.ts +11 -0
- package/dist/tools/shell-result.js +1 -0
- package/dist/tools/shell-tool.d.ts +45 -0
- package/dist/tools/shell-tool.js +141 -0
- package/dist/tools/siteCrawlerTool.d.ts +32 -0
- package/dist/tools/siteCrawlerTool.js +205 -0
- package/dist/tools/tool-registry.d.ts +67 -0
- package/dist/tools/tool-registry.js +596 -0
- package/dist/tools/validate-tool.d.ts +23 -0
- package/dist/tools/validate-tool.js +201 -0
- package/dist/tools/workspace-index.d.ts +46 -0
- package/dist/tools/workspace-index.js +173 -0
- package/dist/types.d.ts +222 -0
- package/dist/types.js +7 -0
- package/dist/updater/index.d.ts +14 -0
- package/dist/updater/index.js +120 -0
- package/dist/util/banner.d.ts +25 -0
- package/dist/util/banner.js +140 -0
- package/dist/util/command-suggester.d.ts +6 -0
- package/dist/util/command-suggester.js +25 -0
- package/dist/util/confirm-interrupt.d.ts +10 -0
- package/dist/util/confirm-interrupt.js +31 -0
- package/dist/util/continue-trigger.d.ts +11 -0
- package/dist/util/continue-trigger.js +20 -0
- package/dist/util/env-info.d.ts +18 -0
- package/dist/util/env-info.js +37 -0
- package/dist/util/file-access-log.d.ts +35 -0
- package/dist/util/file-access-log.js +140 -0
- package/dist/util/footer-manager.d.ts +124 -0
- package/dist/util/footer-manager.js +195 -0
- package/dist/util/footer-renderer.d.ts +67 -0
- package/dist/util/footer-renderer.js +319 -0
- package/dist/util/footer-state.d.ts +34 -0
- package/dist/util/footer-state.js +18 -0
- package/dist/util/footer-text.d.ts +51 -0
- package/dist/util/footer-text.js +74 -0
- package/dist/util/ids.d.ts +1 -0
- package/dist/util/ids.js +4 -0
- package/dist/util/levenshtein.d.ts +6 -0
- package/dist/util/levenshtein.js +34 -0
- package/dist/util/logger.d.ts +10 -0
- package/dist/util/logger.js +41 -0
- package/dist/util/logs.d.ts +26 -0
- package/dist/util/logs.js +88 -0
- package/dist/util/output-handler.d.ts +89 -0
- package/dist/util/output-handler.js +193 -0
- package/dist/util/output-interceptor.d.ts +18 -0
- package/dist/util/output-interceptor.js +49 -0
- package/dist/util/output-paths.d.ts +43 -0
- package/dist/util/output-paths.js +121 -0
- package/dist/util/package-json.d.ts +6 -0
- package/dist/util/package-json.js +36 -0
- package/dist/util/process-kill.d.ts +27 -0
- package/dist/util/process-kill.js +148 -0
- package/dist/util/protocol-error-logger.d.ts +33 -0
- package/dist/util/protocol-error-logger.js +73 -0
- package/dist/util/redact.d.ts +25 -0
- package/dist/util/redact.js +103 -0
- package/dist/util/scroll-region-guard.d.ts +33 -0
- package/dist/util/scroll-region-guard.js +63 -0
- package/dist/util/spinner.d.ts +15 -0
- package/dist/util/spinner.js +49 -0
- package/dist/util/terminal-output.d.ts +34 -0
- package/dist/util/terminal-output.js +1 -0
- package/dist/util/terminal-silent.d.ts +6 -0
- package/dist/util/terminal-silent.js +20 -0
- package/dist/util/terminal.d.ts +56 -0
- package/dist/util/terminal.js +124 -0
- package/dist/util/text-sanitize.d.ts +8 -0
- package/dist/util/text-sanitize.js +45 -0
- package/dist/util/thinking-spinner.d.ts +27 -0
- package/dist/util/thinking-spinner.js +189 -0
- package/dist/util/tool-error-logger.d.ts +33 -0
- package/dist/util/tool-error-logger.js +77 -0
- package/dist/util/tty.d.ts +13 -0
- package/dist/util/tty.js +16 -0
- package/dist/util/xcoder-paths.d.ts +56 -0
- package/dist/util/xcoder-paths.js +63 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +4 -0
- package/dist/worker-agent/to-subtask-node.d.ts +35 -0
- package/dist/worker-agent/to-subtask-node.js +41 -0
- package/dist/worker-agent/worker-orchestrator.d.ts +104 -0
- package/dist/worker-agent/worker-orchestrator.js +201 -0
- package/package.json +39 -4
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-scaffolding
|
|
3
|
+
role: scaffolding
|
|
4
|
+
description: Turns an existing design document into a scaffolded, runnable repository — directory layout, package manifest, config, CI/dev-entry-point skeleton, and an initial git checkpoint — then hands off to implementation, one component at a time. Bridges software-architect/architect's design output and programmer/software-engineer's implementation work; neither of those covers the "zero to running skeleton" step.
|
|
5
|
+
triggers:
|
|
6
|
+
- "scaffold"
|
|
7
|
+
- "scaffold the project"
|
|
8
|
+
- "scaffold a repository"
|
|
9
|
+
- "scaffold the repository"
|
|
10
|
+
- "bootstrap the project"
|
|
11
|
+
- "bootstrap a project"
|
|
12
|
+
- "project skeleton"
|
|
13
|
+
- "repo skeleton"
|
|
14
|
+
- "repository skeleton"
|
|
15
|
+
- "initialize the repository"
|
|
16
|
+
- "set up the repository"
|
|
17
|
+
- "greenfield project"
|
|
18
|
+
- "from the design document"
|
|
19
|
+
- "from the design doc"
|
|
20
|
+
- "implement the design document"
|
|
21
|
+
- "build from the design"
|
|
22
|
+
version: "1.0.0"
|
|
23
|
+
requires_tools:
|
|
24
|
+
- read_tool
|
|
25
|
+
- glob_tool
|
|
26
|
+
- grep_tool
|
|
27
|
+
- write_edit_tool
|
|
28
|
+
- run_command_tool
|
|
29
|
+
- github_tool
|
|
30
|
+
composes_with:
|
|
31
|
+
- software-architect
|
|
32
|
+
- architect
|
|
33
|
+
- programmer
|
|
34
|
+
- software-engineer
|
|
35
|
+
- task-planning
|
|
36
|
+
- git-vcs
|
|
37
|
+
- devops
|
|
38
|
+
- workspace-context
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Process
|
|
42
|
+
|
|
43
|
+
1. **Read the design document in full before creating anything.** `glob_tool` for the likely
|
|
44
|
+
names first if not given a path — `design.md`, `DESIGN.md`, `blueprint.md`,
|
|
45
|
+
`solution-design.md`, `docs/design/**/*.md`, `plan/*.md`. Extract, concretely: the chosen
|
|
46
|
+
tech stack (language/runtime/framework/versions if stated), the component/module list, the
|
|
47
|
+
external dependencies (databases, queues, third-party APIs), and any explicitly stated
|
|
48
|
+
directory-layout or naming conventions. If the design doc is silent on a structural
|
|
49
|
+
decision (e.g. monorepo vs. multi-package, test framework choice), pick the ecosystem's
|
|
50
|
+
own convention for the stated language rather than inventing one — don't ask the user for
|
|
51
|
+
things a design doc this detailed should already imply.
|
|
52
|
+
2. **Compose with `task-planning` before writing files** if the component list has more than a
|
|
53
|
+
few items — turn the design into a WBS (one task per component/config artifact) so the run
|
|
54
|
+
gets scored on decisive, forward-moving steps instead of one undifferentiated "build
|
|
55
|
+
everything" action.
|
|
56
|
+
3. **Scaffold structure and config first, implementation code second, in that order** — and
|
|
57
|
+
validate the skeleton actually installs/builds before writing a single line of feature code:
|
|
58
|
+
- Directory layout matching the design doc's module boundaries.
|
|
59
|
+
- Package manifest (`package.json`/`pyproject.toml`/`go.mod`/`Cargo.toml`/etc.) with the
|
|
60
|
+
dependencies the design doc names — not extras "just in case."
|
|
61
|
+
- `.gitignore` scoped to the actual stack (build output, dependency caches, local env
|
|
62
|
+
files) — not a generic copy-paste that ignores files the project actually needs tracked.
|
|
63
|
+
- A minimal entry point that runs/compiles with no real logic yet (e.g. a "hello world"
|
|
64
|
+
server route, an empty test that passes) — this is the checkpoint that proves the
|
|
65
|
+
scaffold itself works before any component logic is layered on.
|
|
66
|
+
- Run the install/build command (`run_command_tool`) and read the Observation. A scaffold
|
|
67
|
+
that "looks right" but was never actually installed/built is not validated — don't skip
|
|
68
|
+
this step even though it feels like overhead for boilerplate.
|
|
69
|
+
4. **Commit the bare scaffold before implementing anything** (compose with `git-vcs`): `git
|
|
70
|
+
init` (if not already a repo) and one commit for the working skeleton. This is a direct
|
|
71
|
+
lesson from this project's own incident history (PM-2026-07-25-001's own P3 finding: "no git
|
|
72
|
+
history... impossible to trace when truncation first occurred or what changed") — a
|
|
73
|
+
scaffold with no checkpoint means any later mistake has no rollback point, and root-causing
|
|
74
|
+
it later has nothing to bisect against.
|
|
75
|
+
5. **Implement component by component from the WBS, validating each one before moving to the
|
|
76
|
+
next** — write the code for one component, run its tests/linter/build (Validation phase),
|
|
77
|
+
then move on. Writing every component's code first and validating once at the end defeats
|
|
78
|
+
the point of incremental verification and produces a pile of unvalidated changes that are
|
|
79
|
+
hard to attribute a failure to.
|
|
80
|
+
|
|
81
|
+
## Instructions — non-negotiable
|
|
82
|
+
|
|
83
|
+
- **One file per `write_edit_tool` call, not one call dumping the whole scaffold.** Every file
|
|
84
|
+
this skill creates (manifest, config, source stub) should be its own `write_edit_tool` call
|
|
85
|
+
with `mode='write'`. This project's own `agent/config/llm.yaml` sizes `max_tokens` at 16384
|
|
86
|
+
(~57KB) specifically so that any single completion has a real ceiling — a single response
|
|
87
|
+
trying to emit an entire multi-file scaffold as one giant blob risks hitting
|
|
88
|
+
`finish_reason: "length"` mid-generation. `truncationGuard.ts` will now catch that and force a
|
|
89
|
+
clean retry instead of silently writing a truncated file (the actual root cause of
|
|
90
|
+
PM-2026-07-25-001), but relying on that safety net for routine scaffolding work is strictly
|
|
91
|
+
worse than just not generating oversized single completions in the first place.
|
|
92
|
+
- **Check before you scaffold**: `glob_tool`/`grep_tool` for an existing manifest, `.git/`
|
|
93
|
+
directory, or non-empty target directory before treating this as greenfield. Scaffolding on
|
|
94
|
+
top of an existing project silently overwrites config — confirm the directory is actually
|
|
95
|
+
empty (or that overwriting specific named files is intended) before writing.
|
|
96
|
+
- **Never invent a directory layout the design doc doesn't imply.** If the design doc specifies
|
|
97
|
+
module boundaries, the directory structure should map onto them directly — restructuring
|
|
98
|
+
"for cleanliness" beyond what's specified is scope creep on a scaffolding task and makes the
|
|
99
|
+
result harder to review against the doc it's supposed to implement.
|
|
100
|
+
- **Config values that are secrets (API keys, DB credentials, tokens) go in a `.env.example`
|
|
101
|
+
with placeholder values and documentation, never a real `.env` with invented-looking real
|
|
102
|
+
values** — a scaffold's `.env.example` is a template, not a place to guess at credentials.
|
|
103
|
+
|
|
104
|
+
## Strategies
|
|
105
|
+
|
|
106
|
+
- Batch tightly-related, small config values into one file (e.g. `tsconfig.json`,
|
|
107
|
+
`.eslintrc`) rather than one `write_edit_tool` call per config key — the one-file-per-call
|
|
108
|
+
rule above is about avoiding oversized *individual* completions, not about maximizing the
|
|
109
|
+
number of tool calls for its own sake.
|
|
110
|
+
- If the target ecosystem has a standard scaffolding tool (e.g. `npm create vite@latest`,
|
|
111
|
+
`cargo new`, `django-admin startproject`), prefer running it via `run_command_tool` over
|
|
112
|
+
hand-writing the same boilerplate it would generate — less surface area for a hand-written
|
|
113
|
+
config to drift from ecosystem convention, and it's a single verifiable command instead of
|
|
114
|
+
several hand-authored files that could each have a typo.
|
|
115
|
+
- Prefer wiring cross-platform-safe entry points (a plain `npm start`/`make run`-style command
|
|
116
|
+
that works without assuming a specific shell) over OS-specific scripts as the *primary*
|
|
117
|
+
documented way to run the project, and only add OS-specific scripts (`.sh`/`.bat`) as
|
|
118
|
+
secondary conveniences layered on top — this project's own scripts hit real, confirmed bugs
|
|
119
|
+
from the opposite ordering (a heavy, POSIX-only script wired as the automatic entry point,
|
|
120
|
+
breaking on every platform including Linux due to a line-ending issue). Don't repeat that
|
|
121
|
+
shape in a new scaffold.
|
|
122
|
+
|
|
123
|
+
## Experience
|
|
124
|
+
|
|
125
|
+
- A design doc that names a tech stack but not exact versions is not license to pick whatever
|
|
126
|
+
is newest — check for a stated minimum/target version first (engines field, runtime version
|
|
127
|
+
file, CI config if the design doc references one); silently picking latest can introduce
|
|
128
|
+
compatibility problems the design doc's author didn't anticipate.
|
|
129
|
+
- The most common scaffolding failure isn't a missing file, it's an unvalidated one — a
|
|
130
|
+
manifest that lists a dependency that doesn't actually resolve, or an entry point that was
|
|
131
|
+
never actually run. Always execute the install/build/run command and read its Observation
|
|
132
|
+
before considering the scaffold step done, exactly as `devops`'s "Validate" step requires for
|
|
133
|
+
a deploy pipeline — the same discipline applies here, just earlier in the lifecycle.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-engineer
|
|
3
|
+
role: qa
|
|
4
|
+
description: Test strategy and quality verification — systematic coverage (boundary/edge cases, negative paths, regression) and structured bug reporting instead of only confirming the happy path works once.
|
|
5
|
+
triggers:
|
|
6
|
+
- "test plan"
|
|
7
|
+
- "test strategy"
|
|
8
|
+
- "quality assurance"
|
|
9
|
+
- "write test cases"
|
|
10
|
+
- "regression test"
|
|
11
|
+
- "verify this works"
|
|
12
|
+
- "find bugs"
|
|
13
|
+
- "test coverage"
|
|
14
|
+
- "edge cases"
|
|
15
|
+
version: "1.0.0"
|
|
16
|
+
requires_tools:
|
|
17
|
+
- read_tool
|
|
18
|
+
- run_command_tool
|
|
19
|
+
- playwright_run_tool
|
|
20
|
+
- api_test_tool
|
|
21
|
+
- crawl_and_generate_playwright_test_tool
|
|
22
|
+
composes_with:
|
|
23
|
+
- workspace-context
|
|
24
|
+
- task-planning
|
|
25
|
+
- software-engineer
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
<!-- xcoder:version 1 | xcoder:task task-ad2c3b | xcoder:updated 2026-11-04T15:34:54.851Z | xcoder:subtask code-st-8afddf -->
|
|
29
|
+
|
|
30
|
+
## Precedence when a QA coverage run is active (read first)
|
|
31
|
+
|
|
32
|
+
When the task carries `requirementsPath` — i.e. it is a QA coverage run (requirement → plan →
|
|
33
|
+
Playwright → run → report) — this skill's coverage rule takes precedence over the happy-path
|
|
34
|
+
heuristic in `playwright-ui-tester` ("the happy path plus the 1–2 realistic failure modes").
|
|
35
|
+
|
|
36
|
+
The **requirement set**, not the happy-path heuristic, defines the scenario floor: every
|
|
37
|
+
requirement admitted at intake needs at least one scenario, every scenario needs at least one
|
|
38
|
+
Playwright test, and the test title must carry its `[REQ-nnn][SCN-...]` tags. Ad-hoc UI runs with
|
|
39
|
+
no `requirementsPath` are unchanged and stay cheap.
|
|
40
|
+
|
|
41
|
+
This precedence is guidance only. The plan-approval check, the title-tag check and the coverage
|
|
42
|
+
gate are enforced in code (`src/qa-agent/qa-test-plan.ts`, `qa-spec-authoring.ts`,
|
|
43
|
+
`coverage-gate.ts`) — a coverage number cannot be improved by anything written here.
|
|
44
|
+
|
|
45
|
+
## Process
|
|
46
|
+
|
|
47
|
+
1. Before writing test cases, identify the actual contract being tested: inputs, expected outputs,
|
|
48
|
+
documented error conditions, and any invariants that must always hold — read the code/spec
|
|
49
|
+
rather than guessing behavior from the function name.
|
|
50
|
+
2. Cover the standard boundary set for every input: empty/null, zero, negative, maximum,
|
|
51
|
+
one-past-maximum, duplicate entries, and malformed/unexpected type — not just the example given
|
|
52
|
+
in the task. This is the single highest-value habit in this skill.
|
|
53
|
+
3. Test negative/error paths explicitly: does the system fail the way it's supposed to (clear
|
|
54
|
+
error, correct status code, no data corruption), not just whether it succeeds on good input.
|
|
55
|
+
4. For anything with concurrency or shared state, consider what happens when two operations race —
|
|
56
|
+
most real production bugs live here, not in single-threaded happy-path logic.
|
|
57
|
+
5. When testing a UI, verify keyboard-only navigation and at least one non-desktop viewport in
|
|
58
|
+
addition to the primary click-through path — see the `ui-ux-design` skill for the specific
|
|
59
|
+
checklist when the target is a UI.
|
|
60
|
+
6. After confirming a bug, write a minimal reproduction (smallest input/steps that still trigger
|
|
61
|
+
it) before reporting — a report with the smallest repro is fixed faster than one with the
|
|
62
|
+
original, more complex trigger.
|
|
63
|
+
|
|
64
|
+
## Instructions — non-negotiable
|
|
65
|
+
|
|
66
|
+
- Never report "it doesn't work" without the specific input, expected output, actual output, and
|
|
67
|
+
exact steps/command used — an unreproducible report has near-zero value.
|
|
68
|
+
- Never mark a test as passing based on the absence of a crash alone — check the actual output/
|
|
69
|
+
return value against the expected one.
|
|
70
|
+
- When automating tests (e.g. `playwright_run_tool`, `api_test_tool`), assert on specific expected
|
|
71
|
+
values/states, not just "the page loaded" or "the request returned 200" — a broken feature that
|
|
72
|
+
still returns 200 with wrong data will pass a weak assertion.
|
|
73
|
+
- Flag flaky tests explicitly rather than silently re-running until green — a test that
|
|
74
|
+
intermittently fails is signal, not noise, and re-running to hide it defeats the point of testing.
|
|
75
|
+
|
|
76
|
+
## Strategies
|
|
77
|
+
|
|
78
|
+
- Prioritize testing effort by risk (what's most likely to break × how bad if it does), not by
|
|
79
|
+
what's easiest to test — a simple getter needs less attention than a payment calculation.
|
|
80
|
+
- Prefer a small number of tests that exercise realistic user/system workflows end-to-end over a
|
|
81
|
+
large number of tests that only check trivial internals in isolation, when time is limited.
|
|
82
|
+
- When a bug is found, ask whether the same class of input could break other similar code paths in
|
|
83
|
+
the codebase before considering the investigation complete.
|
|
84
|
+
|
|
85
|
+
## Experience
|
|
86
|
+
|
|
87
|
+
- The most common gap in AI-generated or rushed test suites is only testing the example from the
|
|
88
|
+
task description — deliberately test at least one input the task description never mentioned.
|
|
89
|
+
- Bugs cluster at boundaries (off-by-one, empty collections, the first/last item in a loop, state
|
|
90
|
+
transitions) far more often than in the middle of straightforward logic — weight test design
|
|
91
|
+
accordingly.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rca
|
|
3
|
+
role: Root Cause Analysis
|
|
4
|
+
description: >
|
|
5
|
+
Investigates incidents/bugs to find the actual root cause, not just the symptom. Load
|
|
6
|
+
whenever the task involves an incident, an unexplained failure, "why did this happen", or a
|
|
7
|
+
bug whose fix isn't obvious from the surface report.
|
|
8
|
+
triggers: [rca, "root cause", incident, postmortem, "why did this fail", "why is this happening", outage]
|
|
9
|
+
version: 1.0
|
|
10
|
+
requires_tools: [read_tool, grep_tool, run_command_tool]
|
|
11
|
+
composes_with: [tester, performance-tester, secops, programmer]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Role
|
|
15
|
+
Owns finding the actual causal chain behind a failure — not the first plausible explanation —
|
|
16
|
+
and distinguishing root cause from contributing factors and symptoms.
|
|
17
|
+
|
|
18
|
+
## Process
|
|
19
|
+
1. **Establish the timeline** — what changed and when, correlated with when the symptom
|
|
20
|
+
started (deploys, config changes, traffic shifts, dependency updates).
|
|
21
|
+
2. **Reproduce if possible** — a reproduced failure is far stronger evidence than log
|
|
22
|
+
inference alone.
|
|
23
|
+
3. **Ask "why" iteratively** — keep pushing past the first answer until you reach something
|
|
24
|
+
actionable and structural, not just the proximate trigger.
|
|
25
|
+
4. **Verify the hypothesis** — the true root cause should, when reverted/fixed, make the
|
|
26
|
+
symptom go away (Validation phase) and its absence should explain why the incident
|
|
27
|
+
wasn't happening before.
|
|
28
|
+
5. **Separate root cause from contributing factors** — e.g., "no rate limit" (root) vs.
|
|
29
|
+
"traffic spike" (trigger) are different things; name both, fix the root.
|
|
30
|
+
|
|
31
|
+
## Strategies
|
|
32
|
+
- Prefer evidence (logs, metrics, repro) over plausible-sounding narrative.
|
|
33
|
+
- Check "what changed recently" first — most incidents correlate with a recent change.
|
|
34
|
+
- Consider multiple causal chains before committing to one; don't stop at the first fit.
|
|
35
|
+
- Distinguish trigger (what set it off) from root cause (what made the system vulnerable to
|
|
36
|
+
that trigger).
|
|
37
|
+
|
|
38
|
+
## Planning Approach
|
|
39
|
+
- Timebox investigation phases: timeline reconstruction → hypothesis generation → hypothesis
|
|
40
|
+
verification, rather than open-ended digging.
|
|
41
|
+
- Write the postmortem as you go (running notes), not reconstructed from memory afterward.
|
|
42
|
+
|
|
43
|
+
## Instructions for This Task Type
|
|
44
|
+
- Never present a hypothesis as the root cause without verification evidence.
|
|
45
|
+
- Always produce a timeline and explicitly list contributing factors alongside the root
|
|
46
|
+
cause, plus a corrective action for each.
|
|
47
|
+
|
|
48
|
+
## Experience / Common Pitfalls
|
|
49
|
+
- Stopping at the proximate cause ("the server crashed") instead of the structural cause
|
|
50
|
+
("no memory limit + unbounded cache growth") leads to recurrence.
|
|
51
|
+
- Blame-oriented framing ("who broke this") derails RCA from its purpose — focus on system
|
|
52
|
+
and process gaps.
|
|
53
|
+
|
|
54
|
+
## Output Artifacts
|
|
55
|
+
- Timeline
|
|
56
|
+
- Root cause + contributing factors
|
|
57
|
+
- Corrective actions (with owners/priority if known)
|
|
58
|
+
- Postmortem doc
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: redhat
|
|
3
|
+
role: devops
|
|
4
|
+
description: Administer RHEL/CentOS/Rocky/Alma servers — dnf/yum package management, subscription-manager registration, SELinux troubleshooting, and firewalld — the RHEL-family equivalents that differ meaningfully from Debian/Ubuntu conventions.
|
|
5
|
+
triggers:
|
|
6
|
+
- "red hat"
|
|
7
|
+
- "redhat"
|
|
8
|
+
- "rhel"
|
|
9
|
+
- "centos"
|
|
10
|
+
- "rocky linux"
|
|
11
|
+
- "dnf install"
|
|
12
|
+
- "yum install"
|
|
13
|
+
- "selinux"
|
|
14
|
+
- "firewalld"
|
|
15
|
+
- "subscription-manager"
|
|
16
|
+
version: "1.0.0"
|
|
17
|
+
requires_tools:
|
|
18
|
+
- run_command_tool
|
|
19
|
+
- ssh_tool
|
|
20
|
+
- ssh_copy_tool
|
|
21
|
+
composes_with:
|
|
22
|
+
- workspace-context
|
|
23
|
+
- openshift
|
|
24
|
+
- rosa
|
|
25
|
+
- docker
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. On RHEL proper (not CentOS Stream/Rocky/Alma), register the system with
|
|
31
|
+
`subscription-manager register` and attach an appropriate subscription/enable the needed repos
|
|
32
|
+
before `dnf install` — unregistered RHEL has no package repos enabled by default, unlike
|
|
33
|
+
Ubuntu's apt which works out of the box. This is the most common "package not found" surprise
|
|
34
|
+
for anyone coming from Debian-family systems.
|
|
35
|
+
2. Use `dnf` (RHEL 8+/CentOS Stream/Rocky/Alma) or `yum` (RHEL 7 and older) — `dnf` is the modern
|
|
36
|
+
tool and is what current guidance should target; confirm the actual OS version rather than
|
|
37
|
+
assuming.
|
|
38
|
+
3. Check SELinux status (`getenforce`) before debugging a "permission denied" that looks otherwise
|
|
39
|
+
inexplicable — SELinux enforces mandatory access control independent of standard Unix
|
|
40
|
+
permissions, and a process can have correct file permissions and still be blocked by policy.
|
|
41
|
+
4. Manage the firewall with `firewall-cmd` (firewalld), not raw `iptables`, on modern RHEL-family
|
|
42
|
+
systems — firewalld is the standard front-end and mixing direct iptables rules with it causes
|
|
43
|
+
confusing, hard-to-reproduce state.
|
|
44
|
+
5. Use systemd (same as Ubuntu) for service management — this part is consistent across the
|
|
45
|
+
Linux distributions covered here, unlike package management and MAC (mandatory access control).
|
|
46
|
+
|
|
47
|
+
## Instructions — non-negotiable
|
|
48
|
+
|
|
49
|
+
- Never resolve a SELinux-caused denial by running `setenforce 0` (disabling enforcement) on a
|
|
50
|
+
production/shared system — diagnose the specific denial (see sequence below) and fix the context
|
|
51
|
+
or write a targeted policy exception instead. Disabling SELinux removes a real security layer
|
|
52
|
+
system-wide for the sake of one local issue.
|
|
53
|
+
- Never open a firewalld port with `--zone=public` when a more restrictive zone would do — scope
|
|
54
|
+
to the minimum needed.
|
|
55
|
+
- Always make firewalld changes with `--permanent` and then `firewall-cmd --reload` — without
|
|
56
|
+
`--permanent`, changes vanish on the next reboot, which reliably confuses anyone testing a change
|
|
57
|
+
and forgetting to persist it.
|
|
58
|
+
- Never assume CentOS Stream/Rocky/Alma package availability is identical to RHEL — they track
|
|
59
|
+
RHEL closely but aren't guaranteed bit-identical; verify a package/repo exists for the specific
|
|
60
|
+
distro and version in use.
|
|
61
|
+
|
|
62
|
+
## Strategies
|
|
63
|
+
|
|
64
|
+
- Prefer `dnf module` for software with multiple available versions (e.g. different language
|
|
65
|
+
runtime streams) over manually adding third-party repos, when a module stream provides what's
|
|
66
|
+
needed — keeps the system on RHEL's supported package paths.
|
|
67
|
+
- When SELinux blocks something legitimate repeatedly, prefer a scoped `semanage`/policy module fix
|
|
68
|
+
for the specific context over broad `setenforce 0`/`chcon` one-offs that don't survive a
|
|
69
|
+
relabel and don't document why the exception exists.
|
|
70
|
+
- For services listening on non-standard ports, remember SELinux also tracks expected port-to-service
|
|
71
|
+
type mappings (`semanage port -l`) independent of the firewall — a firewalld rule alone isn't
|
|
72
|
+
always sufficient if SELinux's port type doesn't match.
|
|
73
|
+
|
|
74
|
+
## Diagnostic sequence for SELinux-blocked access
|
|
75
|
+
|
|
76
|
+
1. `getenforce` — confirm SELinux is actually in `Enforcing` mode (vs. `Permissive`/`Disabled`)
|
|
77
|
+
before spending time chasing an SELinux theory for a non-SELinux problem.
|
|
78
|
+
2. `ausearch -m avc -ts recent` (or `grep AVC /var/log/audit/audit.log`) — find the actual denial
|
|
79
|
+
and what it was trying to do.
|
|
80
|
+
3. `sealert -a /var/log/audit/audit.log` (if `setroubleshoot` is installed) — gives a human-readable
|
|
81
|
+
explanation and the specific suggested fix command, usually a `semanage`/`setsebool` invocation.
|
|
82
|
+
4. Apply the narrowest suggested fix (a specific boolean or file context change) rather than the
|
|
83
|
+
broadest one offered.
|
|
84
|
+
|
|
85
|
+
## Experience
|
|
86
|
+
|
|
87
|
+
- "It works when I run it manually as root but not as the service" combined with correct file
|
|
88
|
+
permissions is the classic SELinux signature — check `getenforce` and AVC denials before
|
|
89
|
+
anything else once permissions are confirmed correct.
|
|
90
|
+
- A firewalld rule that "isn't working" after being added is very often the missing `--permanent`
|
|
91
|
+
+ `--reload`, or being added to the wrong zone (`firewall-cmd --get-active-zones` shows which
|
|
92
|
+
zone the actual interface is using) rather than a genuinely wrong rule.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rosa
|
|
3
|
+
role: devops
|
|
4
|
+
description: Provision and operate Red Hat OpenShift Service on AWS (ROSA) — the AWS-account and STS prerequisites specific to managed OpenShift, how much is Red-Hat-managed vs. customer-managed, and the cluster-creation/upgrade workflow via the rosa CLI.
|
|
5
|
+
triggers:
|
|
6
|
+
- "rosa cluster"
|
|
7
|
+
- "red hat openshift service on aws"
|
|
8
|
+
- "openshift on aws"
|
|
9
|
+
- "provision rosa"
|
|
10
|
+
- "rosa cli"
|
|
11
|
+
version: "1.0.0"
|
|
12
|
+
requires_tools:
|
|
13
|
+
- run_command_tool
|
|
14
|
+
- ssh_tool
|
|
15
|
+
- read_tool
|
|
16
|
+
composes_with:
|
|
17
|
+
- workspace-context
|
|
18
|
+
- openshift
|
|
19
|
+
- aws
|
|
20
|
+
- kubernetes
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Process
|
|
24
|
+
|
|
25
|
+
1. Understand the managed-service boundary before doing anything else: Red Hat and AWS jointly
|
|
26
|
+
operate and are responsible for the control plane (masters, etcd, the OpenShift platform itself,
|
|
27
|
+
patching, SLA); the customer is responsible for what runs on worker nodes (applications, their
|
|
28
|
+
configuration and security) and for the AWS account/IAM setup the cluster lives inside. Don't
|
|
29
|
+
plan control-plane-level changes (etcd tuning, master node access) that ROSA doesn't expose —
|
|
30
|
+
that's intentionally not customer-managed.
|
|
31
|
+
2. Set up prerequisites in order: an AWS account meeting ROSA's requirements, the `rosa` CLI and
|
|
32
|
+
`oc` CLI installed, `rosa login`, then `rosa create account-roles` and (for STS clusters, the
|
|
33
|
+
modern default) `rosa create operator-roles`/`oidc-provider` before `rosa create cluster`.
|
|
34
|
+
Skipping the account-roles/operator-roles step is the most common cause of cluster creation
|
|
35
|
+
failing partway through.
|
|
36
|
+
3. Prefer STS (Security Token Service) mode over the older non-STS/IAM-credentials mode for new
|
|
37
|
+
clusters — narrower, per-operator IAM permissions instead of one broad set of long-lived
|
|
38
|
+
credentials; this is the current recommended default.
|
|
39
|
+
4. Plan networking (VPC CIDR, subnet layout across AZs, whether it's a public or fully-private
|
|
40
|
+
cluster) before creation — networking topology is far more disruptive to change after cluster
|
|
41
|
+
creation than most other settings.
|
|
42
|
+
5. Once created, treat it as OpenShift for day-to-day operations (see the `openshift` skill for
|
|
43
|
+
`oc`, projects, routes, S2I) — ROSA is standard OpenShift underneath; the ROSA-specific concerns
|
|
44
|
+
are almost entirely at the provisioning/AWS-integration layer, not day-to-day workload management.
|
|
45
|
+
|
|
46
|
+
## Instructions — non-negotiable
|
|
47
|
+
|
|
48
|
+
- Never attempt to modify control-plane/master node configuration directly — it's not exposed for
|
|
49
|
+
customer modification and isn't the supported path even where technically reachable; use
|
|
50
|
+
cluster-level OpenShift configuration objects (`MachineConfig`, operators) for anything that
|
|
51
|
+
needs to be customer-configured.
|
|
52
|
+
- Never share the AWS IAM credentials used for cluster creation broadly — scope `rosa` CLI access
|
|
53
|
+
to the specific people/automation that need to manage cluster lifecycle, following the same
|
|
54
|
+
least-privilege principle as any other AWS IAM usage.
|
|
55
|
+
- Confirm the target AWS region actually supports ROSA before planning around it — availability is
|
|
56
|
+
not universal across all AWS regions.
|
|
57
|
+
- Plan and budget for both AWS infrastructure costs (EC2, EBS, load balancers, data transfer) and
|
|
58
|
+
the separate ROSA service fee — these are billed differently and both need to be accounted for.
|
|
59
|
+
|
|
60
|
+
## Strategies
|
|
61
|
+
|
|
62
|
+
- Use multi-AZ cluster topology for production; single-AZ is a reasonable cost tradeoff for
|
|
63
|
+
dev/test only.
|
|
64
|
+
- Prefer cluster autoscaling (`rosa create autoscaler`/machine pool min/max) over statically sized
|
|
65
|
+
worker node counts for variable workloads, to avoid both over-provisioning cost and
|
|
66
|
+
under-provisioning capacity crunches.
|
|
67
|
+
- For multi-cluster setups (e.g. separate clusters per environment), keep the account-roles/
|
|
68
|
+
operator-roles naming consistent and documented — becomes hard to track which IAM roles serve
|
|
69
|
+
which cluster otherwise.
|
|
70
|
+
|
|
71
|
+
## Experience
|
|
72
|
+
|
|
73
|
+
- Cluster creation failures most often trace back to an incomplete or out-of-order prerequisite
|
|
74
|
+
step (missing account-roles, expired/insufficient IAM permissions on the creating principal, or
|
|
75
|
+
a service quota limit in the target AWS account/region) rather than a `rosa create cluster`
|
|
76
|
+
parameter being wrong — check `rosa describe cluster -c <name>` and `rosa logs install -c <name>`
|
|
77
|
+
for the actual failure stage before re-attempting.
|
|
78
|
+
- Upgrades are cluster-scoped and versioned like standard OpenShift — check `rosa list upgrade -c
|
|
79
|
+
<name>` for available versions and known upgrade-path constraints before scheduling one, same
|
|
80
|
+
discipline as any other production OpenShift upgrade.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scrum-framework
|
|
3
|
+
role: Scrum Coach / Framework Reference
|
|
4
|
+
description: >
|
|
5
|
+
Reference and coaching knowledge for Scrum — the four roles (Product Owner, Scrum Master,
|
|
6
|
+
Developers, Architect), the five events (Sprint Planning, Daily Scrum, Backlog Refinement,
|
|
7
|
+
Sprint Review, Retrospective), the three artifacts and commitments (Product Backlog/Product
|
|
8
|
+
Goal, Sprint Backlog/Sprint Goal, Increment/Definition of Done), sprint rules, INVEST story
|
|
9
|
+
quality, and Definition of Ready/Done. Load whenever the task involves explaining or coaching
|
|
10
|
+
Scrum roles and accountabilities, running or facilitating a Scrum event, writing or critiquing
|
|
11
|
+
a Sprint Goal or user story, checking a story against INVEST or Definition of Ready/Done,
|
|
12
|
+
evaluating "is this good Scrum" or spotting anti-patterns, or drafting product backlog items,
|
|
13
|
+
acceptance criteria, or facilitation agendas.
|
|
14
|
+
triggers: [scrum, sprint, "product backlog", "sprint goal", "user story", "acceptance criteria", invest, "definition of done", "definition of ready", retrospective, "daily scrum", "sprint planning", "sprint review", "product owner", "scrum master"]
|
|
15
|
+
version: 1.0
|
|
16
|
+
requires_tools: []
|
|
17
|
+
composes_with: [scrum-master-agent]
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
# Scrum Framework
|
|
22
|
+
|
|
23
|
+
Reference knowledge for coaching, explaining, and applying Scrum correctly. Ground every answer in accountability: each role owns exactly one thing and cannot delegate it, each artifact carries exactly one commitment, and every event is a timeboxed inspect-and-adapt opportunity, not a status meeting.
|
|
24
|
+
|
|
25
|
+
## When to go deeper
|
|
26
|
+
|
|
27
|
+
- Full role responsibilities, sprint cycle, and event-by-event agendas: `references/roles_and_events.md`
|
|
28
|
+
- Artifacts, commitments, DoR/DoD, INVEST, and Scrum anti-patterns: `references/artifacts_and_quality.md`
|
|
29
|
+
|
|
30
|
+
Read the relevant reference file before writing detailed coaching content (e.g. a full Sprint Planning agenda, a DoD checklist, or an INVEST review) — don't reconstruct these from memory alone, since the specifics (timeboxes, question sets, checklist items) matter.
|
|
31
|
+
|
|
32
|
+
## Core mental model
|
|
33
|
+
|
|
34
|
+
**Four roles, one accountability each** (Architect is not a canonical Scrum Guide role but is commonly added in technical/CBD-style teams):
|
|
35
|
+
- **Product Owner** — accountable for the *value* of the product. Owns the Product Backlog: content, ordering, clarity. Says what and why, never how.
|
|
36
|
+
- **Scrum Master** — accountable for the *effectiveness of the Scrum Team*. Servant-leader: facilitates events, removes impediments, coaches — not a project manager and has no authority over the backlog or the team's work.
|
|
37
|
+
- **Developers** — accountable for a *usable Increment* every Sprint. Self-organizing, cross-functional, own the Sprint Backlog and estimation collectively.
|
|
38
|
+
- **Architect** (non-canonical, common in technical orgs) — owns the technical blueprint/design decisions and architectural review; not a source of process authority.
|
|
39
|
+
|
|
40
|
+
No one holds more than one primary accountability, and accountabilities are non-transferable — don't recommend workarounds that blur them (e.g. a Scrum Master accepting stories, or a PO estimating).
|
|
41
|
+
|
|
42
|
+
**Five events, each with a hard timebox (a maximum, not a target):**
|
|
43
|
+
1. Sprint Planning (≤8 hrs/4-wk sprint) — produces the Sprint Goal + Sprint Backlog
|
|
44
|
+
2. Daily Scrum (15 min, daily) — inspects progress, replans next 24h; not a status report
|
|
45
|
+
3. Backlog Refinement (≤10% of sprint capacity, continuous, not a formal timeboxed event) — gets items to "Ready"
|
|
46
|
+
4. Sprint Review (≤4 hrs/4-wk sprint) — demonstrates the *working* Increment, gathers stakeholder feedback
|
|
47
|
+
5. Sprint Retrospective (≤3 hrs/4-wk sprint) — produces 1–3 specific, owned improvement actions for the next sprint
|
|
48
|
+
|
|
49
|
+
**Three artifacts, three commitments:**
|
|
50
|
+
| Artifact | Owner | Commitment |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| Product Backlog | Product Owner | Product Goal |
|
|
53
|
+
| Sprint Backlog | Developers | Sprint Goal |
|
|
54
|
+
| Increment | Developers | Definition of Done |
|
|
55
|
+
|
|
56
|
+
## Non-negotiable sprint rules
|
|
57
|
+
|
|
58
|
+
- Only the PO can cancel a Sprint, and only if the Sprint Goal becomes obsolete — this is rare.
|
|
59
|
+
- No scope changes that endanger the Sprint Goal mid-sprint.
|
|
60
|
+
- Sprint length is fixed; never extend to finish late work.
|
|
61
|
+
- Unfinished stories return openly to the Product Backlog — never silently carried over.
|
|
62
|
+
- If an item doesn't meet the Definition of Done, it is not Done. No partial credit.
|
|
63
|
+
|
|
64
|
+
## Writing a good Sprint Goal
|
|
65
|
+
|
|
66
|
+
A Sprint Goal answers "why are we doing this Sprint?" and gives Developers flexibility in *what exactly* they build to get there.
|
|
67
|
+
- Good: "Enable customers to check out via Stripe so we can launch payments to beta users."
|
|
68
|
+
- Bad: "Complete stories SP-142, SP-144, SP-145, SP-147." (a task list, not a goal — gives no room to adapt)
|
|
69
|
+
|
|
70
|
+
## Quick answers vs. deep answers
|
|
71
|
+
|
|
72
|
+
For a simple factual question ("what's the Daily Scrum timebox?", "who owns the Sprint Backlog?") answer directly and briefly from the core mental model above — no need to open the reference files.
|
|
73
|
+
|
|
74
|
+
For anything requiring a full checklist, agenda, or scored evaluation (drafting a Sprint Planning agenda, checking a story against DoR/DoD, scoring INVEST, listing anti-patterns), open the relevant reference file first so specifics are accurate rather than reconstructed from memory.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Artifacts, Quality Gates, and Anti-Patterns
|
|
2
|
+
|
|
3
|
+
## The three artifacts
|
|
4
|
+
|
|
5
|
+
### Product Backlog — owned by the Product Owner, commitment: Product Goal
|
|
6
|
+
The single, ordered list of everything known to be needed in the product. Dynamic — always exists as long as the product does, never "complete." The PO alone is responsible for its content, availability, and ordering.
|
|
7
|
+
|
|
8
|
+
A good Product Backlog Item (PBI) contains:
|
|
9
|
+
- User Story (As a / I want / So that)
|
|
10
|
+
- Acceptance Criteria (Given/When/Then)
|
|
11
|
+
- Story Points estimate
|
|
12
|
+
- Priority / business value
|
|
13
|
+
- Epic linkage (if applicable)
|
|
14
|
+
- Definition of Ready status
|
|
15
|
+
|
|
16
|
+
### Sprint Backlog — owned by the Developers, commitment: Sprint Goal
|
|
17
|
+
The Sprint Goal, the PBIs selected for the Sprint, and an actionable delivery plan. A highly visible, real-time snapshot of the Developers' plan. Only Developers modify it during the Sprint.
|
|
18
|
+
|
|
19
|
+
Components: Sprint Goal (the "why") · Selected PBIs (the "what") · Task breakdown ≤1 day each (the "how") · daily updates reflecting actual remaining work · burndown showing progress to goal.
|
|
20
|
+
|
|
21
|
+
### Increment — owned by the Developers, commitment: Definition of Done
|
|
22
|
+
A concrete, usable stepping stone toward the Product Goal. Additive to all prior Increments, verified working. Multiple Increments may be created within a single Sprint. Delivered at Sprint Review, not merely demoed.
|
|
23
|
+
|
|
24
|
+
Quality gates for an Increment:
|
|
25
|
+
- Meets Definition of Done without exception
|
|
26
|
+
- All acceptance criteria verified by the PO
|
|
27
|
+
- Integrates cleanly with previous Increments
|
|
28
|
+
- Deployable to production at any time
|
|
29
|
+
- No known defects above the agreed threshold
|
|
30
|
+
|
|
31
|
+
## Definition of Ready (DoR) — gate before Sprint Planning
|
|
32
|
+
A story is Ready when it has: Title · Description · Acceptance Criteria · Estimate · No open questions. Stories that skip this gate derail Sprint Planning.
|
|
33
|
+
|
|
34
|
+
## Definition of Done (DoD) — gate before a story counts as Done
|
|
35
|
+
A formal, team-agreed quality bar. If an item doesn't meet it, it is not Done — no exceptions and no partial credit. A representative DoD:
|
|
36
|
+
- Code reviewed and approved
|
|
37
|
+
- Unit tests written and passing (commonly ≥80% coverage)
|
|
38
|
+
- Integration tests passing
|
|
39
|
+
- No new linting or type errors
|
|
40
|
+
- Deployed to staging environment
|
|
41
|
+
- Acceptance criteria verified by the PO
|
|
42
|
+
|
|
43
|
+
When reviewing a real story against DoD, list the specific unmet items rather than a pass/fail verdict — e.g. "missing: integration tests, staging deploy" is actionable; "not Done" is not.
|
|
44
|
+
|
|
45
|
+
## The Three Commitments
|
|
46
|
+
|
|
47
|
+
- **Product Goal** — commits the team to a long-term vision (backs the Product Backlog).
|
|
48
|
+
- **Sprint Goal** — commits the team to what they'll achieve this Sprint (backs the Sprint Backlog).
|
|
49
|
+
- **Definition of Done** — commits the team to the quality standard applied to every Increment.
|
|
50
|
+
|
|
51
|
+
These give the artifacts context and prevent misinterpretation — Scrum's transparency only works if all three are explicit and shared.
|
|
52
|
+
|
|
53
|
+
## INVEST — evaluating story quality
|
|
54
|
+
|
|
55
|
+
Score each criterion individually rather than giving one aggregate pass/fail; name the specific gap.
|
|
56
|
+
|
|
57
|
+
- **Independent** — can be built and delivered without hard dependency on another unscheduled story
|
|
58
|
+
- **Negotiable** — describes outcome, not a rigid spec; room for the how to be worked out
|
|
59
|
+
- **Valuable** — delivers value to a user or the business, not just a technical task
|
|
60
|
+
- **Estimable** — the team has enough clarity to size it
|
|
61
|
+
- **Small** — fits comfortably within a single Sprint (common flag: >13 points signals a split is needed)
|
|
62
|
+
- **Testable** — has clear, verifiable acceptance criteria (Given/When/Then is the standard structure)
|
|
63
|
+
|
|
64
|
+
When a story fails a criterion, suggest a concrete rewrite rather than just naming the failure — e.g. for a missing Testable criterion: draft the Given/When/Then acceptance criteria yourself as a starting point.
|
|
65
|
+
|
|
66
|
+
## Common Scrum anti-patterns to watch for and name
|
|
67
|
+
|
|
68
|
+
- **Zombie sprints** — sprints that continue in form (events happen) but have lost real inspect-and-adapt substance; teams go through the motions without changing behavior based on what they learn.
|
|
69
|
+
- **Sprint padding** — inflating estimates or scope to guarantee an easy "success," which erodes the value of velocity as a planning signal.
|
|
70
|
+
- **Cargo-cult Scrum** — following the mechanics (standups, sprints, boards) without understanding or honoring the underlying purpose (transparency, inspection, adaptation).
|
|
71
|
+
- **Silent carryover** — unfinished work rolling to the next sprint without being explicitly returned to and re-prioritized in the Product Backlog.
|
|
72
|
+
- **Status-report Daily Scrum** — reporting to a manager instead of replanning as a team.
|
|
73
|
+
- **PO absentee** — Developers making value/priority calls the PO should own, or accepting their own work.
|
|
74
|
+
- **Scope creep endangering the Sprint Goal** — adding work mid-sprint without evaluating impact on the committed goal.
|
|
75
|
+
- **Task-list Sprint Goals** — a Sprint Goal that's just an enumerated list of ticket IDs, giving no flexibility or "why."
|
|
76
|
+
|
|
77
|
+
## Scaled Scrum (brief context only)
|
|
78
|
+
|
|
79
|
+
For organizations running multiple Scrum teams on one product, common scaling frameworks include **Nexus**, **LeSS** (Large-Scale Scrum), and **SAFe** (Scaled Agile Framework). These add cross-team coordination events and roles on top of — not instead of — the core Scrum framework above. Give only a brief pointer unless the user specifically wants scaling guidance; the core framework applies at the single-team level regardless.
|