mindforge-cc 11.8.2 → 11.9.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/.agent/mindforge/wf-orchestrate-review.md +35 -0
- package/.agent/mindforge/wf-verification-loop.md +45 -0
- package/.agent/mindforge/wf-workflow-optimizer.md +51 -0
- package/.agent/skills/article-illustrator/SKILL.md +7 -7
- package/.agent/skills/arxiv/SKILL.md +6 -6
- package/.agent/skills/code-wiki/SKILL.md +11 -11
- package/.agent/skills/concept-diagrams/SKILL.md +6 -6
- package/.agent/skills/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
- package/.agent/skills/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
- package/.agent/skills/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
- package/.agent/skills/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
- package/.agent/skills/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
- package/.agent/skills/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
- package/.agent/skills/concept-diagrams/examples/electricity-grid-flow.md +182 -0
- package/.agent/skills/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
- package/.agent/skills/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
- package/.agent/skills/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
- package/.agent/skills/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
- package/.agent/skills/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
- package/.agent/skills/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
- package/.agent/skills/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
- package/.agent/skills/concept-diagrams/examples/wind-turbine-structure.md +338 -0
- package/.agent/skills/concept-diagrams/templates/template.html +174 -0
- package/.agent/skills/domain-intel/SKILL.md +7 -7
- package/.agent/skills/duckduckgo-search/SKILL.md +17 -17
- package/.agent/skills/github-auth/scripts/gh-env.sh +66 -0
- package/.agent/skills/github-code-review/SKILL.md +9 -9
- package/.agent/skills/github-pr-workflow/SKILL.md +3 -3
- package/.agent/skills/godmode/SKILL.md +8 -8
- package/.agent/skills/jupyter-live-kernel/SKILL.md +3 -3
- package/.agent/skills/kanban-orchestrator/SKILL.md +10 -10
- package/.agent/skills/kanban-worker/SKILL.md +6 -6
- package/.agent/skills/llm-wiki/SKILL.md +7 -7
- package/.agent/skills/mindforge-autonomous/SKILL.md +1 -1
- package/.agent/skills/mindforge-complete-milestone/SKILL.md +1 -1
- package/.agent/skills/mindforge-discuss-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-do/SKILL.md +1 -1
- package/.agent/skills/mindforge-execute-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-list-workspaces/SKILL.md +1 -1
- package/.agent/skills/mindforge-manager/SKILL.md +1 -1
- package/.agent/skills/mindforge-neural-orchestrator/SKILL.md +1 -1
- package/.agent/skills/mindforge-new-milestone/SKILL.md +4 -4
- package/.agent/skills/mindforge-new-project/SKILL.md +4 -4
- package/.agent/skills/mindforge-new-workspace/SKILL.md +1 -1
- package/.agent/skills/mindforge-note/SKILL.md +1 -1
- package/.agent/skills/mindforge-plan-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-profile-user/SKILL.md +1 -1
- package/.agent/skills/mindforge-remove-workspace/SKILL.md +1 -1
- package/.agent/skills/mindforge-research-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-ui-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-ui-review/SKILL.md +1 -1
- package/.agent/skills/mindforge-verify-work/SKILL.md +1 -1
- package/.agent/skills/mindforge-workspace-isolated/SKILL.md +1 -1
- package/.agent/skills/node-inspect-debugger/SKILL.md +1 -1
- package/.agent/skills/obsidian/SKILL.md +15 -15
- package/.agent/skills/osint-investigation/SKILL.md +3 -2
- package/.agent/skills/osint-investigation/references/sources/courtlistener.md +98 -0
- package/.agent/skills/osint-investigation/references/sources/gdelt.md +104 -0
- package/.agent/skills/osint-investigation/references/sources/icij-offshore.md +104 -0
- package/.agent/skills/osint-investigation/references/sources/nyc-acris.md +90 -0
- package/.agent/skills/osint-investigation/references/sources/ofac-sdn.md +92 -0
- package/.agent/skills/osint-investigation/references/sources/opencorporates.md +103 -0
- package/.agent/skills/osint-investigation/references/sources/sec-edgar.md +83 -0
- package/.agent/skills/osint-investigation/references/sources/senate-ld.md +89 -0
- package/.agent/skills/osint-investigation/references/sources/usaspending.md +97 -0
- package/.agent/skills/osint-investigation/references/sources/wayback.md +93 -0
- package/.agent/skills/osint-investigation/references/sources/wikipedia.md +107 -0
- package/.agent/skills/osint-investigation/scripts/_http.py +82 -0
- package/.agent/skills/osint-investigation/scripts/_normalize.py +67 -0
- package/.agent/skills/osint-investigation/scripts/build_findings.py +221 -0
- package/.agent/skills/osint-investigation/scripts/entity_resolution.py +228 -0
- package/.agent/skills/osint-investigation/scripts/fetch_courtlistener.py +149 -0
- package/.agent/skills/osint-investigation/scripts/fetch_gdelt.py +161 -0
- package/.agent/skills/osint-investigation/scripts/fetch_icij_offshore.py +234 -0
- package/.agent/skills/osint-investigation/scripts/fetch_nyc_acris.py +203 -0
- package/.agent/skills/osint-investigation/scripts/fetch_ofac_sdn.py +175 -0
- package/.agent/skills/osint-investigation/scripts/fetch_opencorporates.py +191 -0
- package/.agent/skills/osint-investigation/scripts/fetch_sec_edgar.py +184 -0
- package/.agent/skills/osint-investigation/scripts/fetch_senate_ld.py +146 -0
- package/.agent/skills/osint-investigation/scripts/fetch_usaspending.py +170 -0
- package/.agent/skills/osint-investigation/scripts/fetch_wayback.py +142 -0
- package/.agent/skills/osint-investigation/scripts/fetch_wikipedia.py +266 -0
- package/.agent/skills/osint-investigation/scripts/timing_analysis.py +252 -0
- package/.agent/skills/oss-forensics/SKILL.md +10 -9
- package/.agent/skills/oss-forensics/scripts/evidence-store.py +313 -0
- package/.agent/skills/parallel-cli/SKILL.md +2 -2
- package/.agent/skills/pinggy-tunnel/SKILL.md +3 -3
- package/.agent/skills/pixel-art/SKILL.md +2 -2
- package/.agent/skills/plan/SKILL.md +10 -10
- package/.agent/skills/requesting-code-review/SKILL.md +4 -6
- package/.agent/skills/research-paper-writing/SKILL.md +32 -32
- package/.agent/skills/rest-graphql-debug/SKILL.md +31 -32
- package/.agent/skills/s6-container-supervision/SKILL.md +1 -1
- package/.agent/skills/scrapling/SKILL.md +1 -1
- package/.agent/skills/sherlock/SKILL.md +1 -1
- package/.agent/skills/simplify-code/SKILL.md +5 -7
- package/.agent/skills/skill-authoring/SKILL.md +4 -4
- package/.agent/skills/spike/SKILL.md +11 -13
- package/.agent/skills/subagent-driven-development/SKILL.md +7 -11
- package/.agent/skills/systematic-debugging/SKILL.md +13 -14
- package/.agent/skills/test-driven-development/SKILL.md +6 -7
- package/.agent/skills/video-orchestrator/SKILL.md +1 -1
- package/.agent/skills/web-pentest/SKILL.md +7 -7
- package/.mindforge/config.json +3 -2
- package/.mindforge/dynamic-workflows/REGISTRY.md +4 -1
- package/.mindforge/dynamic-workflows/index.json +910 -840
- package/.mindforge/dynamic-workflows/scripts/accessibility-audit.js +88 -90
- package/.mindforge/dynamic-workflows/scripts/ai-model-eval.js +59 -61
- package/.mindforge/dynamic-workflows/scripts/api-contract-test.js +87 -85
- package/.mindforge/dynamic-workflows/scripts/api-migration.js +120 -122
- package/.mindforge/dynamic-workflows/scripts/architecture-modernization.js +84 -86
- package/.mindforge/dynamic-workflows/scripts/code-audit.js +75 -77
- package/.mindforge/dynamic-workflows/scripts/code-explainer.js +99 -101
- package/.mindforge/dynamic-workflows/scripts/competitive-analysis.js +62 -64
- package/.mindforge/dynamic-workflows/scripts/competitive-teardown.js +106 -108
- package/.mindforge/dynamic-workflows/scripts/cost-analysis.js +78 -80
- package/.mindforge/dynamic-workflows/scripts/data-pipeline-validate.js +47 -49
- package/.mindforge/dynamic-workflows/scripts/database-migration.js +85 -87
- package/.mindforge/dynamic-workflows/scripts/debug-detective.js +97 -99
- package/.mindforge/dynamic-workflows/scripts/dependency-health.js +81 -83
- package/.mindforge/dynamic-workflows/scripts/design-system-audit.js +84 -86
- package/.mindforge/dynamic-workflows/scripts/documentation-gen.js +65 -67
- package/.mindforge/dynamic-workflows/scripts/feature-planner.js +78 -80
- package/.mindforge/dynamic-workflows/scripts/incident-response.js +81 -83
- package/.mindforge/dynamic-workflows/scripts/multi-repo-sync.js +49 -51
- package/.mindforge/dynamic-workflows/scripts/mutation-testing.js +113 -115
- package/.mindforge/dynamic-workflows/scripts/onboard-codebase.js +79 -81
- package/.mindforge/dynamic-workflows/scripts/orchestrate-review.js +115 -0
- package/.mindforge/dynamic-workflows/scripts/perf-optimize.js +97 -99
- package/.mindforge/dynamic-workflows/scripts/pr-review.js +61 -63
- package/.mindforge/dynamic-workflows/scripts/refactor-plan.js +88 -90
- package/.mindforge/dynamic-workflows/scripts/release-prep.js +79 -81
- package/.mindforge/dynamic-workflows/scripts/security-hardening.js +117 -119
- package/.mindforge/dynamic-workflows/scripts/security-threat-model.js +119 -121
- package/.mindforge/dynamic-workflows/scripts/tdd-sprint.js +80 -82
- package/.mindforge/dynamic-workflows/scripts/tech-evaluation.js +50 -52
- package/.mindforge/dynamic-workflows/scripts/test-coverage-gap.js +68 -70
- package/.mindforge/dynamic-workflows/scripts/ux-heuristic-audit.js +89 -91
- package/.mindforge/dynamic-workflows/scripts/verification-loop.js +138 -0
- package/.mindforge/dynamic-workflows/scripts/workflow-optimizer.js +136 -0
- package/.mindforge/dynamic-workflows/scripts/writer-reviewer.js +63 -65
- package/.mindforge/memory/sync-manifest.json +1 -1
- package/.mindforge/personas/advisor-researcher.md +2 -2
- package/.mindforge/personas/api-load-tester.md +1 -1
- package/.mindforge/personas/authentication-architect.md +1 -1
- package/.mindforge/personas/backup-recovery-specialist.md +1 -1
- package/.mindforge/personas/build-optimizer.md +1 -1
- package/.mindforge/personas/caching-strategist.md +1 -1
- package/.mindforge/personas/chaos-engineer.md +1 -1
- package/.mindforge/personas/compliance-auditor.md +1 -1
- package/.mindforge/personas/config-management-expert.md +1 -1
- package/.mindforge/personas/coverage-specialist.md +1 -1
- package/.mindforge/personas/debug-specialist.md +2 -2
- package/.mindforge/personas/debugger.md +2 -2
- package/.mindforge/personas/dependency-auditor.md +1 -1
- package/.mindforge/personas/developer.md +1 -1
- package/.mindforge/personas/devops-engineer.md +1 -1
- package/.mindforge/personas/executor.md +1 -1
- package/.mindforge/personas/go-specialist.md +1 -1
- package/.mindforge/personas/incident-commander.md +1 -1
- package/.mindforge/personas/java-specialist.md +1 -1
- package/.mindforge/personas/kubernetes-debugger.md +1 -1
- package/.mindforge/personas/logging-architect.md +1 -1
- package/.mindforge/personas/mf-planner.md +1 -1
- package/.mindforge/personas/mf-researcher.md +1 -1
- package/.mindforge/personas/mf-reviewer.md +1 -1
- package/.mindforge/personas/nyquist-auditor.md +1 -1
- package/.mindforge/personas/observability-engineer.md +1 -1
- package/.mindforge/personas/performance-optimizer.md +1 -1
- package/.mindforge/personas/phase-researcher.md +5 -5
- package/.mindforge/personas/planner.md +1 -1
- package/.mindforge/personas/project-researcher.md +2 -2
- package/.mindforge/personas/python-specialist.md +1 -1
- package/.mindforge/personas/qa-engineer.md +1 -1
- package/.mindforge/personas/release-manager.md +1 -1
- package/.mindforge/personas/research-agent.md +4 -4
- package/.mindforge/personas/roadmapper-extend.md +1 -1
- package/.mindforge/personas/rust-specialist.md +1 -1
- package/.mindforge/personas/security-reviewer.md +1 -1
- package/.mindforge/personas/tech-writer.md +1 -1
- package/.mindforge/personas/typescript-wizard.md +1 -1
- package/.mindforge/personas/ui-researcher.md +1 -1
- package/.mindforge/skills/accessibility/SKILL.md +3 -3
- package/.mindforge/skills/agent-architecture-audit/SKILL.md +11 -0
- package/.mindforge/skills/agent-loops/SKILL.md +1 -1
- package/.mindforge/skills/arxiv/SKILL.md +6 -6
- package/.mindforge/skills/arxiv/scripts/search_arxiv.py +114 -0
- package/.mindforge/skills/code-tour/SKILL.md +2 -2
- package/.mindforge/skills/code-wiki/SKILL.md +11 -11
- package/.mindforge/skills/code-wiki/templates/README.md +31 -0
- package/.mindforge/skills/code-wiki/templates/architecture.md +30 -0
- package/.mindforge/skills/code-wiki/templates/getting-started.md +47 -0
- package/.mindforge/skills/code-wiki/templates/module.md +38 -0
- package/.mindforge/skills/concept-diagrams/SKILL.md +6 -6
- package/.mindforge/skills/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
- package/.mindforge/skills/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
- package/.mindforge/skills/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
- package/.mindforge/skills/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
- package/.mindforge/skills/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
- package/.mindforge/skills/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
- package/.mindforge/skills/concept-diagrams/examples/electricity-grid-flow.md +182 -0
- package/.mindforge/skills/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
- package/.mindforge/skills/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
- package/.mindforge/skills/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
- package/.mindforge/skills/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
- package/.mindforge/skills/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
- package/.mindforge/skills/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
- package/.mindforge/skills/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
- package/.mindforge/skills/concept-diagrams/examples/wind-turbine-structure.md +338 -0
- package/.mindforge/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
- package/.mindforge/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
- package/.mindforge/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
- package/.mindforge/skills/concept-diagrams/templates/template.html +174 -0
- package/.mindforge/skills/creative-ideation/references/full-prompt-library.md +110 -0
- package/.mindforge/skills/documentation/SKILL.md +1 -1
- package/.mindforge/skills/domain-intel/SKILL.md +7 -7
- package/.mindforge/skills/domain-intel/scripts/domain_intel.py +397 -0
- package/.mindforge/skills/duckduckgo-search/SKILL.md +17 -17
- package/.mindforge/skills/duckduckgo-search/scripts/duckduckgo.sh +28 -0
- package/.mindforge/skills/environment-management/SKILL.md +1 -1
- package/.mindforge/skills/github-code-review/SKILL.md +9 -9
- package/.mindforge/skills/github-code-review/references/review-output-template.md +74 -0
- package/.mindforge/skills/github-issues/templates/bug-report.md +35 -0
- package/.mindforge/skills/github-issues/templates/feature-request.md +31 -0
- package/.mindforge/skills/github-pr-workflow/SKILL.md +3 -3
- package/.mindforge/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
- package/.mindforge/skills/github-pr-workflow/references/conventional-commits.md +71 -0
- package/.mindforge/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
- package/.mindforge/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
- package/.mindforge/skills/incident-response/SKILL.md +1 -1
- package/.mindforge/skills/jupyter-live-kernel/SKILL.md +3 -3
- package/.mindforge/skills/kanban-orchestrator/SKILL.md +10 -10
- package/.mindforge/skills/kanban-worker/SKILL.md +6 -6
- package/.mindforge/skills/meme-generation/SKILL.md +1 -1
- package/.mindforge/skills/meme-generation/scripts/generate_meme.py +470 -0
- package/.mindforge/skills/meme-generation/scripts/templates.json +97 -0
- package/.mindforge/skills/obsidian/SKILL.md +15 -15
- package/.mindforge/skills/orch-pipeline/SKILL.md +2 -2
- package/.mindforge/skills/osint-investigation/SKILL.md +3 -2
- package/.mindforge/skills/osint-investigation/references/sources/courtlistener.md +98 -0
- package/.mindforge/skills/osint-investigation/references/sources/gdelt.md +104 -0
- package/.mindforge/skills/osint-investigation/references/sources/icij-offshore.md +104 -0
- package/.mindforge/skills/osint-investigation/references/sources/nyc-acris.md +90 -0
- package/.mindforge/skills/osint-investigation/references/sources/ofac-sdn.md +92 -0
- package/.mindforge/skills/osint-investigation/references/sources/opencorporates.md +103 -0
- package/.mindforge/skills/osint-investigation/references/sources/sec-edgar.md +83 -0
- package/.mindforge/skills/osint-investigation/references/sources/senate-ld.md +89 -0
- package/.mindforge/skills/osint-investigation/references/sources/usaspending.md +97 -0
- package/.mindforge/skills/osint-investigation/references/sources/wayback.md +93 -0
- package/.mindforge/skills/osint-investigation/references/sources/wikipedia.md +107 -0
- package/.mindforge/skills/osint-investigation/scripts/_http.py +82 -0
- package/.mindforge/skills/osint-investigation/scripts/_normalize.py +67 -0
- package/.mindforge/skills/osint-investigation/scripts/build_findings.py +221 -0
- package/.mindforge/skills/osint-investigation/scripts/entity_resolution.py +228 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_courtlistener.py +149 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_gdelt.py +161 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_icij_offshore.py +234 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_nyc_acris.py +203 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_ofac_sdn.py +175 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_opencorporates.py +191 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_sec_edgar.py +184 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_senate_ld.py +146 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_usaspending.py +170 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_wayback.py +142 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_wikipedia.py +266 -0
- package/.mindforge/skills/osint-investigation/scripts/timing_analysis.py +252 -0
- package/.mindforge/skills/osint-investigation/templates/source-template.md +59 -0
- package/.mindforge/skills/oss-forensics/SKILL.md +6 -6
- package/.mindforge/skills/oss-forensics/references/evidence-types.md +89 -0
- package/.mindforge/skills/oss-forensics/references/github-archive-guide.md +184 -0
- package/.mindforge/skills/oss-forensics/references/investigation-templates.md +131 -0
- package/.mindforge/skills/oss-forensics/references/recovery-techniques.md +164 -0
- package/.mindforge/skills/oss-forensics/scripts/evidence-store.py +313 -0
- package/.mindforge/skills/oss-forensics/templates/forensic-report.md +151 -0
- package/.mindforge/skills/oss-forensics/templates/malicious-package-report.md +43 -0
- package/.mindforge/skills/pixel-art/SKILL.md +2 -2
- package/.mindforge/skills/pixel-art/references/palettes.md +49 -0
- package/.mindforge/skills/plan/SKILL.md +10 -10
- package/.mindforge/skills/requesting-code-review/SKILL.md +4 -6
- package/.mindforge/skills/research-paper-writing/SKILL.md +32 -32
- package/.mindforge/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
- package/.mindforge/skills/research-paper-writing/references/checklists.md +434 -0
- package/.mindforge/skills/research-paper-writing/references/citation-workflow.md +563 -0
- package/.mindforge/skills/research-paper-writing/references/experiment-patterns.md +728 -0
- package/.mindforge/skills/research-paper-writing/references/human-evaluation.md +476 -0
- package/.mindforge/skills/research-paper-writing/references/paper-types.md +481 -0
- package/.mindforge/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
- package/.mindforge/skills/research-paper-writing/references/sources.md +191 -0
- package/.mindforge/skills/research-paper-writing/references/writing-guide.md +474 -0
- package/.mindforge/skills/research-paper-writing/templates/README.md +251 -0
- package/.mindforge/skills/scrapling/SKILL.md +1 -1
- package/.mindforge/skills/security-review/SKILL.md +1 -1
- package/.mindforge/skills/sherlock/SKILL.md +1 -1
- package/.mindforge/skills/simplify-code/SKILL.md +5 -7
- package/.mindforge/skills/spike/SKILL.md +11 -13
- package/.mindforge/skills/subagent-driven-development/SKILL.md +7 -11
- package/.mindforge/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
- package/.mindforge/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
- package/.mindforge/skills/systematic-debugging/SKILL.md +13 -14
- package/.mindforge/skills/test-driven-development/SKILL.md +7 -8
- package/.mindforge/skills/testing-standards/SKILL.md +1 -1
- package/.mindforge/skills/web-pentest/SKILL.md +2 -2
- package/.mindforge/skills/web-pentest/references/bypass-techniques.md +133 -0
- package/.mindforge/skills/web-pentest/references/exploitation-techniques.md +204 -0
- package/.mindforge/skills/web-pentest/references/scope-enforcement.md +110 -0
- package/.mindforge/skills/web-pentest/references/vuln-taxonomy.md +81 -0
- package/.mindforge/skills/web-pentest/templates/authorization.md +69 -0
- package/.mindforge/skills/web-pentest/templates/pentest-report.md +178 -0
- package/.mindforge/skills/writing-skills/SKILL.md +4 -3
- package/CHANGELOG.md +35 -0
- package/MINDFORGE.md +3 -3
- package/README.md +9 -7
- package/RELEASENOTES.md +65 -2
- package/SECURITY.md +5 -3
- package/bin/autonomous/auto-runner.js +5 -2
- package/bin/engine/skill-loader.js +4 -0
- package/bin/governance/rbac.js +4 -0
- package/bin/memory/eis-client.js +1 -0
- package/bin/mindforge-cli.js +5 -0
- package/bin/models/bedrock-provider.js +192 -0
- package/bin/models/model-client.js +19 -0
- package/bin/spawn-agent.js +9 -2
- package/docs/commands-reference.md +68 -6
- package/docs/faq.md +38 -1
- package/docs/getting-started.md +27 -12
- package/docs/sdk-reference.md +36 -3
- package/docs/troubleshooting.md +59 -1
- package/docs/user-guide.md +7 -4
- package/package.json +3 -3
- package/.claude/commands/mindforge/skill-tdd.md +0 -53
- package/.claude/commands/mindforge/skills-index.md +0 -118
- package/.claude/commands/mindforge/systematic-debug.md +0 -60
- package/.claude/commands/mindforge/wf-accessibility-audit.md +0 -31
- package/.claude/commands/mindforge/wf-ai-model-eval.md +0 -31
- package/.claude/commands/mindforge/wf-api-migration.md +0 -31
- package/.claude/commands/mindforge/wf-architecture-modernization.md +0 -32
- package/.claude/commands/mindforge/wf-catalog.md +0 -59
- package/.claude/commands/mindforge/wf-code-audit.md +0 -31
- package/.claude/commands/mindforge/wf-code-explainer.md +0 -31
- package/.claude/commands/mindforge/wf-competitive-analysis.md +0 -31
- package/.claude/commands/mindforge/wf-competitive-teardown.md +0 -31
- package/.claude/commands/mindforge/wf-cost-analysis.md +0 -31
- package/.claude/commands/mindforge/wf-data-pipeline-validate.md +0 -31
- package/.claude/commands/mindforge/wf-database-migration.md +0 -31
- package/.claude/commands/mindforge/wf-debug-detective.md +0 -32
- package/.claude/commands/mindforge/wf-design-system-audit.md +0 -31
- package/.claude/commands/mindforge/wf-documentation-gen.md +0 -31
- package/.claude/commands/mindforge/wf-feature-planner.md +0 -31
- package/.claude/commands/mindforge/wf-incident-response.md +0 -31
- package/.claude/commands/mindforge/wf-multi-repo-sync.md +0 -31
- package/.claude/commands/mindforge/wf-mutation-testing.md +0 -31
- package/.claude/commands/mindforge/wf-onboard-codebase.md +0 -31
- package/.claude/commands/mindforge/wf-perf-optimize.md +0 -31
- package/.claude/commands/mindforge/wf-pr-review.md +0 -31
- package/.claude/commands/mindforge/wf-refactor-plan.md +0 -31
- package/.claude/commands/mindforge/wf-release-prep.md +0 -31
- package/.claude/commands/mindforge/wf-security-threat-model.md +0 -31
- package/.claude/commands/mindforge/wf-tdd-sprint.md +0 -31
- package/.claude/commands/mindforge/wf-tech-evaluation.md +0 -31
- package/.claude/commands/mindforge/wf-ux-heuristic-audit.md +0 -31
- package/.claude/commands/mindforge/wf-writer-reviewer.md +0 -30
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Review Output Template
|
|
2
|
+
|
|
3
|
+
Use this as the structure for PR review summary comments. Copy and fill in the sections.
|
|
4
|
+
|
|
5
|
+
## For PR Summary Comment
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
## Code Review Summary
|
|
9
|
+
|
|
10
|
+
**Verdict: [Approved ✅ | Changes Requested 🔴 | Reviewed 💬]** ([N] issues, [N] suggestions)
|
|
11
|
+
|
|
12
|
+
**PR:** #[number] — [title]
|
|
13
|
+
**Author:** @[username]
|
|
14
|
+
**Files changed:** [N] (+[additions] -[deletions])
|
|
15
|
+
|
|
16
|
+
### 🔴 Critical
|
|
17
|
+
<!-- Issues that MUST be fixed before merge -->
|
|
18
|
+
- **file.py:line** — [description]. Suggestion: [fix].
|
|
19
|
+
|
|
20
|
+
### ⚠️ Warnings
|
|
21
|
+
<!-- Issues that SHOULD be fixed, but not strictly blocking -->
|
|
22
|
+
- **file.py:line** — [description].
|
|
23
|
+
|
|
24
|
+
### 💡 Suggestions
|
|
25
|
+
<!-- Non-blocking improvements, style preferences, future considerations -->
|
|
26
|
+
- **file.py:line** — [description].
|
|
27
|
+
|
|
28
|
+
### ✅ Looks Good
|
|
29
|
+
<!-- Call out things done well — positive reinforcement -->
|
|
30
|
+
- [aspect that was done well]
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
*Reviewed by
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Severity Guide
|
|
37
|
+
|
|
38
|
+
| Level | Icon | When to use | Blocks merge? |
|
|
39
|
+
|-------|------|-------------|---------------|
|
|
40
|
+
| Critical | 🔴 | Security vulnerabilities, data loss risk, crashes, broken core functionality | Yes |
|
|
41
|
+
| Warning | ⚠️ | Bugs in non-critical paths, missing error handling, missing tests for new code | Usually yes |
|
|
42
|
+
| Suggestion | 💡 | Style improvements, refactoring ideas, performance hints, documentation gaps | No |
|
|
43
|
+
| Looks Good | ✅ | Clean patterns, good test coverage, clear naming, smart design decisions | N/A |
|
|
44
|
+
|
|
45
|
+
## Verdict Decision
|
|
46
|
+
|
|
47
|
+
- **Approved ✅** — Zero critical/warning items. Only suggestions or all clear.
|
|
48
|
+
- **Changes Requested 🔴** — Any critical or warning item exists.
|
|
49
|
+
- **Reviewed 💬** — Observations only (draft PRs, uncertain findings, informational).
|
|
50
|
+
|
|
51
|
+
## For Inline Comments
|
|
52
|
+
|
|
53
|
+
Prefix inline comments with the severity icon so they're scannable:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
🔴 **Critical:** User input passed directly to SQL query — use parameterized queries to prevent injection.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
⚠️ **Warning:** This error is silently swallowed. At minimum, log it.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
💡 **Suggestion:** This could be simplified with a dict comprehension:
|
|
65
|
+
`{k: v for k, v in items if v is not None}`
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
✅ **Nice:** Good use of context manager here — ensures cleanup on exceptions.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## For Local (Pre-Push) Review
|
|
73
|
+
|
|
74
|
+
When reviewing locally before push, use the same structure but present it as a message to the user instead of a PR comment. Skip the PR metadata header and just start with the severity sections.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## Bug Description
|
|
2
|
+
|
|
3
|
+
<!-- Clear, concise description of the bug -->
|
|
4
|
+
|
|
5
|
+
## Steps to Reproduce
|
|
6
|
+
|
|
7
|
+
1.
|
|
8
|
+
2.
|
|
9
|
+
3.
|
|
10
|
+
|
|
11
|
+
## Expected Behavior
|
|
12
|
+
|
|
13
|
+
<!-- What should happen -->
|
|
14
|
+
|
|
15
|
+
## Actual Behavior
|
|
16
|
+
|
|
17
|
+
<!-- What actually happens -->
|
|
18
|
+
|
|
19
|
+
## Environment
|
|
20
|
+
|
|
21
|
+
- OS:
|
|
22
|
+
- Version/Commit:
|
|
23
|
+
- Python version:
|
|
24
|
+
- Browser (if applicable):
|
|
25
|
+
|
|
26
|
+
## Error Output
|
|
27
|
+
|
|
28
|
+
<!-- Paste relevant error messages, stack traces, or logs -->
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Additional Context
|
|
34
|
+
|
|
35
|
+
<!-- Screenshots, related issues, workarounds discovered, etc. -->
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
## Feature Description
|
|
2
|
+
|
|
3
|
+
<!-- What do you want? -->
|
|
4
|
+
|
|
5
|
+
## Motivation
|
|
6
|
+
|
|
7
|
+
<!-- Why would this be useful? What problem does it solve? -->
|
|
8
|
+
|
|
9
|
+
## Proposed Solution
|
|
10
|
+
|
|
11
|
+
<!-- How could it work? Include API sketches, CLI examples, or mockups if helpful -->
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
# Example usage
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Alternatives Considered
|
|
18
|
+
|
|
19
|
+
<!-- Other approaches and why they're less ideal -->
|
|
20
|
+
|
|
21
|
+
-
|
|
22
|
+
|
|
23
|
+
## Scope / Effort Estimate
|
|
24
|
+
|
|
25
|
+
<!-- How big is this? What areas of the codebase would it touch? -->
|
|
26
|
+
|
|
27
|
+
Small / Medium / Large — <!-- explanation -->
|
|
28
|
+
|
|
29
|
+
## Additional Context
|
|
30
|
+
|
|
31
|
+
<!-- Links to similar features in other tools, relevant discussions, etc. -->
|
|
@@ -73,7 +73,7 @@ Branch naming conventions:
|
|
|
73
73
|
|
|
74
74
|
## 2. Making Commits
|
|
75
75
|
|
|
76
|
-
Use the agent's file tools (`
|
|
76
|
+
Use the agent's file tools (`Write`, `Edit`) to make changes, then commit:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
# Stage specific files
|
|
@@ -247,7 +247,7 @@ cd /tmp && unzip -o ci-logs.zip -d ci-logs && cat ci-logs/*.txt
|
|
|
247
247
|
|
|
248
248
|
### Step 2: Fix and Push
|
|
249
249
|
|
|
250
|
-
After identifying the issue, use file tools (`
|
|
250
|
+
After identifying the issue, use file tools (`Edit`, `Write`) to fix it:
|
|
251
251
|
|
|
252
252
|
```bash
|
|
253
253
|
git add <fixed_files>
|
|
@@ -265,7 +265,7 @@ When asked to auto-fix CI, follow this loop:
|
|
|
265
265
|
|
|
266
266
|
1. Check CI status → identify failures
|
|
267
267
|
2. Read failure logs → understand the error
|
|
268
|
-
3. Use `
|
|
268
|
+
3. Use `Read` + `Edit`/`Write` → fix the code
|
|
269
269
|
4. `git add . && git commit -m "fix: ..." && git push`
|
|
270
270
|
5. Wait for CI → re-check status
|
|
271
271
|
6. Repeat if still failing (up to 3 attempts, then ask the user)
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# CI Troubleshooting Quick Reference
|
|
2
|
+
|
|
3
|
+
Common CI failure patterns and how to diagnose them from the logs.
|
|
4
|
+
|
|
5
|
+
## Reading CI Logs
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# With gh
|
|
9
|
+
gh run view <RUN_ID> --log-failed
|
|
10
|
+
|
|
11
|
+
# With curl — download and extract
|
|
12
|
+
curl -sL -H "Authorization: token $GITHUB_TOKEN" \
|
|
13
|
+
https://api.github.com/repos/$GH_OWNER/$GH_REPO/actions/runs/<RUN_ID>/logs \
|
|
14
|
+
-o /tmp/ci-logs.zip && unzip -o /tmp/ci-logs.zip -d /tmp/ci-logs
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Common Failure Patterns
|
|
18
|
+
|
|
19
|
+
### Test Failures
|
|
20
|
+
|
|
21
|
+
**Signatures in logs:**
|
|
22
|
+
```
|
|
23
|
+
FAILED tests/test_foo.py::test_bar - AssertionError
|
|
24
|
+
E assert 42 == 43
|
|
25
|
+
ERROR tests/test_foo.py - ModuleNotFoundError
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Diagnosis:**
|
|
29
|
+
1. Find the test file and line number from the traceback
|
|
30
|
+
2. Use `read_file` to read the failing test
|
|
31
|
+
3. Check if it's a logic error in the code or a stale test assertion
|
|
32
|
+
4. Look for `ModuleNotFoundError` — usually a missing dependency in CI
|
|
33
|
+
|
|
34
|
+
**Common fixes:**
|
|
35
|
+
- Update assertion to match new expected behavior
|
|
36
|
+
- Add missing dependency to requirements.txt / pyproject.toml
|
|
37
|
+
- Fix flaky test (add retry, mock external service, fix race condition)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
### Lint / Formatting Failures
|
|
42
|
+
|
|
43
|
+
**Signatures in logs:**
|
|
44
|
+
```
|
|
45
|
+
src/auth.py:45:1: E302 expected 2 blank lines, got 1
|
|
46
|
+
src/models.py:12:80: E501 line too long (95 > 88 characters)
|
|
47
|
+
error: would reformat src/utils.py
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Diagnosis:**
|
|
51
|
+
1. Read the specific file:line numbers mentioned
|
|
52
|
+
2. Check which linter is complaining (flake8, ruff, black, isort, mypy)
|
|
53
|
+
|
|
54
|
+
**Common fixes:**
|
|
55
|
+
- Run the formatter locally: `black .`, `isort .`, `ruff check --fix .`
|
|
56
|
+
- Fix the specific style violation by editing the file
|
|
57
|
+
- If using `patch`, make sure to match existing indentation style
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Type Check Failures (mypy / pyright)
|
|
62
|
+
|
|
63
|
+
**Signatures in logs:**
|
|
64
|
+
```
|
|
65
|
+
src/api.py:23: error: Argument 1 to "process" has incompatible type "str"; expected "int"
|
|
66
|
+
src/models.py:45: error: Missing return statement
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Diagnosis:**
|
|
70
|
+
1. Read the file at the mentioned line
|
|
71
|
+
2. Check the function signature and what's being passed
|
|
72
|
+
|
|
73
|
+
**Common fixes:**
|
|
74
|
+
- Add type cast or conversion
|
|
75
|
+
- Fix the function signature
|
|
76
|
+
- Add `# type: ignore` comment as last resort (with explanation)
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Build / Compilation Failures
|
|
81
|
+
|
|
82
|
+
**Signatures in logs:**
|
|
83
|
+
```
|
|
84
|
+
ModuleNotFoundError: No module named 'some_package'
|
|
85
|
+
ERROR: Could not find a version that satisfies the requirement foo==1.2.3
|
|
86
|
+
npm ERR! Could not resolve dependency
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Diagnosis:**
|
|
90
|
+
1. Check requirements.txt / package.json for the missing or incompatible dependency
|
|
91
|
+
2. Compare local vs CI Python/Node version
|
|
92
|
+
|
|
93
|
+
**Common fixes:**
|
|
94
|
+
- Add missing dependency to requirements file
|
|
95
|
+
- Pin compatible version
|
|
96
|
+
- Update lockfile (`pip freeze`, `npm install`)
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Permission / Auth Failures
|
|
101
|
+
|
|
102
|
+
**Signatures in logs:**
|
|
103
|
+
```
|
|
104
|
+
fatal: could not read Username for 'https://github.com': No such device or address
|
|
105
|
+
Error: Resource not accessible by integration
|
|
106
|
+
403 Forbidden
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Diagnosis:**
|
|
110
|
+
1. Check if the workflow needs special permissions (token scopes)
|
|
111
|
+
2. Check if secrets are configured (missing `GITHUB_TOKEN` or custom secrets)
|
|
112
|
+
|
|
113
|
+
**Common fixes:**
|
|
114
|
+
- Add `permissions:` block to workflow YAML
|
|
115
|
+
- Verify secrets exist: `gh secret list` or check repo settings
|
|
116
|
+
- For fork PRs: some secrets aren't available by design
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Timeout Failures
|
|
121
|
+
|
|
122
|
+
**Signatures in logs:**
|
|
123
|
+
```
|
|
124
|
+
Error: The operation was canceled.
|
|
125
|
+
The job running on runner ... has exceeded the maximum execution time
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Diagnosis:**
|
|
129
|
+
1. Check which step timed out
|
|
130
|
+
2. Look for infinite loops, hung processes, or slow network calls
|
|
131
|
+
|
|
132
|
+
**Common fixes:**
|
|
133
|
+
- Add timeout to the specific step: `timeout-minutes: 10`
|
|
134
|
+
- Fix the underlying performance issue
|
|
135
|
+
- Split into parallel jobs
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Docker / Container Failures
|
|
140
|
+
|
|
141
|
+
**Signatures in logs:**
|
|
142
|
+
```
|
|
143
|
+
docker: Error response from daemon
|
|
144
|
+
failed to solve: ... not found
|
|
145
|
+
COPY failed: file not found in build context
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Diagnosis:**
|
|
149
|
+
1. Check Dockerfile for the failing step
|
|
150
|
+
2. Verify the referenced files exist in the repo
|
|
151
|
+
|
|
152
|
+
**Common fixes:**
|
|
153
|
+
- Fix path in COPY/ADD command
|
|
154
|
+
- Update base image tag
|
|
155
|
+
- Add missing file to `.dockerignore` exclusion or remove from it
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Auto-Fix Decision Tree
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
CI Failed
|
|
163
|
+
├── Test failure
|
|
164
|
+
│ ├── Assertion mismatch → update test or fix logic
|
|
165
|
+
│ └── Import/module error → add dependency
|
|
166
|
+
├── Lint failure → run formatter, fix style
|
|
167
|
+
├── Type error → fix types
|
|
168
|
+
├── Build failure
|
|
169
|
+
│ ├── Missing dep → add to requirements
|
|
170
|
+
│ └── Version conflict → update pins
|
|
171
|
+
├── Permission error → update workflow permissions (needs user)
|
|
172
|
+
└── Timeout → investigate perf (may need user input)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Re-running After Fix
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
git add <fixed_files> && git commit -m "fix: resolve CI failure" && git push
|
|
179
|
+
|
|
180
|
+
# Then monitor
|
|
181
|
+
gh pr checks --watch 2>/dev/null || \
|
|
182
|
+
echo "Poll with: curl -s -H 'Authorization: token ...' https://api.github.com/repos/.../commits/$(git rev-parse HEAD)/status"
|
|
183
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Conventional Commits Quick Reference
|
|
2
|
+
|
|
3
|
+
Format: `type(scope): description`
|
|
4
|
+
|
|
5
|
+
## Types
|
|
6
|
+
|
|
7
|
+
| Type | When to use | Example |
|
|
8
|
+
|------|------------|---------|
|
|
9
|
+
| `feat` | New feature or capability | `feat(auth): add OAuth2 login flow` |
|
|
10
|
+
| `fix` | Bug fix | `fix(api): handle null response from /users endpoint` |
|
|
11
|
+
| `refactor` | Code restructuring, no behavior change | `refactor(db): extract query builder into separate module` |
|
|
12
|
+
| `docs` | Documentation only | `docs: update API usage examples in README` |
|
|
13
|
+
| `test` | Adding or updating tests | `test(auth): add integration tests for token refresh` |
|
|
14
|
+
| `ci` | CI/CD configuration | `ci: add Python 3.12 to test matrix` |
|
|
15
|
+
| `chore` | Maintenance, dependencies, tooling | `chore: upgrade pytest to 8.x` |
|
|
16
|
+
| `perf` | Performance improvement | `perf(search): add index on users.email column` |
|
|
17
|
+
| `style` | Formatting, whitespace, semicolons | `style: run black formatter on src/` |
|
|
18
|
+
| `build` | Build system or external deps | `build: switch from setuptools to hatch` |
|
|
19
|
+
| `revert` | Reverts a previous commit | `revert: revert "feat(auth): add OAuth2 login flow"` |
|
|
20
|
+
|
|
21
|
+
## Scope (optional)
|
|
22
|
+
|
|
23
|
+
Short identifier for the area of the codebase: `auth`, `api`, `db`, `ui`, `cli`, etc.
|
|
24
|
+
|
|
25
|
+
## Breaking Changes
|
|
26
|
+
|
|
27
|
+
Add `!` after type or `BREAKING CHANGE:` in footer:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
feat(api)!: change authentication to use bearer tokens
|
|
31
|
+
|
|
32
|
+
BREAKING CHANGE: API endpoints now require Bearer token instead of API key header.
|
|
33
|
+
Migration guide: https://docs.example.com/migrate-auth
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Multi-line Body
|
|
37
|
+
|
|
38
|
+
Wrap at 72 characters. Use bullet points for multiple changes:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
feat(auth): add JWT-based user authentication
|
|
42
|
+
|
|
43
|
+
- Add login/register endpoints with input validation
|
|
44
|
+
- Add User model with argon2 password hashing
|
|
45
|
+
- Add auth middleware for protected routes
|
|
46
|
+
- Add token refresh endpoint with rotation
|
|
47
|
+
|
|
48
|
+
Closes #42
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Linking Issues
|
|
52
|
+
|
|
53
|
+
In the commit body or footer:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Closes #42 ← closes the issue when merged
|
|
57
|
+
Fixes #42 ← same effect
|
|
58
|
+
Refs #42 ← references without closing
|
|
59
|
+
Co-authored-by: Name <email>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Quick Decision Guide
|
|
63
|
+
|
|
64
|
+
- Added something new? → `feat`
|
|
65
|
+
- Something was broken and you fixed it? → `fix`
|
|
66
|
+
- Changed how code is organized but not what it does? → `refactor`
|
|
67
|
+
- Only touched tests? → `test`
|
|
68
|
+
- Only touched docs? → `docs`
|
|
69
|
+
- Updated CI/CD pipelines? → `ci`
|
|
70
|
+
- Updated dependencies or tooling? → `chore`
|
|
71
|
+
- Made something faster? → `perf`
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## Bug Description
|
|
2
|
+
|
|
3
|
+
<!-- What was happening? -->
|
|
4
|
+
|
|
5
|
+
Fixes #
|
|
6
|
+
|
|
7
|
+
## Root Cause
|
|
8
|
+
|
|
9
|
+
<!-- What was causing the bug? -->
|
|
10
|
+
|
|
11
|
+
## Fix
|
|
12
|
+
|
|
13
|
+
<!-- What does this PR change to fix it? -->
|
|
14
|
+
|
|
15
|
+
-
|
|
16
|
+
|
|
17
|
+
## How to Verify
|
|
18
|
+
|
|
19
|
+
<!-- Steps a reviewer can follow to confirm the fix -->
|
|
20
|
+
|
|
21
|
+
1.
|
|
22
|
+
2.
|
|
23
|
+
3.
|
|
24
|
+
|
|
25
|
+
## Test Plan
|
|
26
|
+
|
|
27
|
+
- [ ] Added regression test for this bug
|
|
28
|
+
- [ ] Existing tests still pass
|
|
29
|
+
- [ ] Manual verification of the fix
|
|
30
|
+
|
|
31
|
+
## Risk Assessment
|
|
32
|
+
|
|
33
|
+
<!-- Could this fix break anything else? What's the blast radius? -->
|
|
34
|
+
|
|
35
|
+
Low / Medium / High — <!-- explanation -->
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- 1-3 bullet points describing what this PR does -->
|
|
4
|
+
|
|
5
|
+
-
|
|
6
|
+
|
|
7
|
+
## Motivation
|
|
8
|
+
|
|
9
|
+
<!-- Why is this change needed? Link to issue if applicable -->
|
|
10
|
+
|
|
11
|
+
Closes #
|
|
12
|
+
|
|
13
|
+
## Changes
|
|
14
|
+
|
|
15
|
+
<!-- Detailed list of changes made -->
|
|
16
|
+
|
|
17
|
+
-
|
|
18
|
+
|
|
19
|
+
## Test Plan
|
|
20
|
+
|
|
21
|
+
<!-- How was this tested? Checklist of verification steps -->
|
|
22
|
+
|
|
23
|
+
- [ ] Unit tests pass (`pytest`)
|
|
24
|
+
- [ ] Manual testing of new functionality
|
|
25
|
+
- [ ] No regressions in existing behavior
|
|
26
|
+
|
|
27
|
+
## Screenshots / Examples
|
|
28
|
+
|
|
29
|
+
<!-- If UI changes or new output, show before/after -->
|
|
30
|
+
|
|
31
|
+
## Notes for Reviewers
|
|
32
|
+
|
|
33
|
+
<!-- Anything reviewers should pay special attention to -->
|
|
@@ -3,7 +3,7 @@ name: incident-response
|
|
|
3
3
|
version: 1.0.0
|
|
4
4
|
min_mindforge_version: 0.3.0
|
|
5
5
|
status: stable
|
|
6
|
-
triggers: incident, outage, downtime, alert, pagerduty, oncall, on-call, postmortem, post-mortem, runbook, degraded, unavailable, error rate, p0,
|
|
6
|
+
triggers: incident, outage, downtime, alert, pagerduty, oncall, on-call, postmortem, post-mortem, runbook, degraded, unavailable, error rate, p0, p1, rollback, hotfix, revert, emergency, spike, anomaly, SLA, SLO, SLI
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Skill — Incident Response Engineering
|
|
@@ -10,7 +10,7 @@ triggers: jupyter kernel, live jupyter, run jupyter, interactive notebook, jupyt
|
|
|
10
10
|
# Jupyter Live Kernel (hamelnb)
|
|
11
11
|
|
|
12
12
|
Gives you a **stateful Python REPL** via a live Jupyter kernel. Variables persist
|
|
13
|
-
across executions. Use this instead of `
|
|
13
|
+
across executions. Use this instead of `Bash` when you need to build up
|
|
14
14
|
state incrementally, explore APIs, inspect DataFrames, or iterate on complex code.
|
|
15
15
|
|
|
16
16
|
## When to Use This vs Other Tools
|
|
@@ -18,8 +18,8 @@ state incrementally, explore APIs, inspect DataFrames, or iterate on complex cod
|
|
|
18
18
|
| Tool | Use When |
|
|
19
19
|
|------|----------|
|
|
20
20
|
| **This skill** | Iterative exploration, state across steps, data science, ML, "let me try this and check" |
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
21
|
+
| `Bash` | One-shot scripts needing hermes tool access (WebSearch, file ops). Stateless. |
|
|
22
|
+
| `Bash` | Shell commands, builds, installs, git, process management |
|
|
23
23
|
|
|
24
24
|
**Rule of thumb:** If you'd want a Jupyter notebook for the task, use this skill.
|
|
25
25
|
|
|
@@ -9,7 +9,7 @@ triggers: kanban orchestrator, multi-agent kanban, decompose and route, orchestr
|
|
|
9
9
|
|
|
10
10
|
# Kanban Orchestrator — Decomposition Playbook
|
|
11
11
|
|
|
12
|
-
> The **core worker lifecycle** (including the `
|
|
12
|
+
> The **core worker lifecycle** (including the `TaskCreate` fan-out pattern and the "decompose, don't execute" rule) is auto-injected into every kanban process via the `KANBAN_GUIDANCE` system-prompt block. This skill is the deeper playbook when you're an orchestrator profile whose whole job is routing.
|
|
13
13
|
|
|
14
14
|
## Profiles are user-configured — not a fixed roster
|
|
15
15
|
|
|
@@ -38,7 +38,7 @@ Create Kanban tasks when any of these are true:
|
|
|
38
38
|
5. **Review / iteration is expected.** A reviewer profile loops on drafter output.
|
|
39
39
|
6. **The audit trail matters.** Board rows persist in SQLite forever.
|
|
40
40
|
|
|
41
|
-
If *none* of those apply — it's a small one-shot reasoning task — use `
|
|
41
|
+
If *none* of those apply — it's a small one-shot reasoning task — use `Agent` instead or answer the user directly.
|
|
42
42
|
|
|
43
43
|
## The anti-temptation rules
|
|
44
44
|
|
|
@@ -48,7 +48,7 @@ Your job description says "route, don't execute." The rules that enforce that:
|
|
|
48
48
|
- **For any concrete task, create a Kanban task and assign it.** Every single time.
|
|
49
49
|
- **Split multi-lane requests before creating cards.** A user prompt can contain several independent workstreams. Extract those lanes first, then create one card per lane instead of bundling unrelated work into a single implementer card.
|
|
50
50
|
- **Run independent lanes in parallel.** If two cards do not need each other's output, leave them unlinked so the dispatcher can fan them out. Link only true data dependencies.
|
|
51
|
-
- **Never create dependent work as independent ready cards.** If a card must wait for another card, pass `parents=[...]` in the original `
|
|
51
|
+
- **Never create dependent work as independent ready cards.** If a card must wait for another card, pass `parents=[...]` in the original `TaskCreate` call. Do not create it first and link it later, and do not rely on prose like "wait for T1" inside the body.
|
|
52
52
|
- **If no specialist fits the available profiles, ask the user which profile to create or which existing profile to use.** Do not invent profile names; the dispatcher will silently drop unknown assignees.
|
|
53
53
|
- **Decompose, route, and summarize — that's the whole job.**
|
|
54
54
|
|
|
@@ -84,27 +84,27 @@ Show the graph to the user before creating cards. Let them correct it — includ
|
|
|
84
84
|
Use the profile names from Step 0. The example below uses placeholders `<profile-A>`, `<profile-B>`, `<profile-C>` — replace them with what the user actually has.
|
|
85
85
|
|
|
86
86
|
```python
|
|
87
|
-
t1 =
|
|
87
|
+
t1 = TaskCreate(
|
|
88
88
|
title="research: Postgres cost vs current",
|
|
89
89
|
assignee="<profile-A>", # whichever profile handles research on this setup
|
|
90
90
|
body="Compare estimated infrastructure costs, migration costs, and ongoing ops costs over a 3-year window. Sources: AWS/GCP pricing, team time estimates, current Postgres bills from peers.",
|
|
91
91
|
tenant=os.environ.get("HERMES_TENANT"),
|
|
92
92
|
)["task_id"]
|
|
93
93
|
|
|
94
|
-
t2 =
|
|
94
|
+
t2 = TaskCreate(
|
|
95
95
|
title="research: Postgres performance vs current",
|
|
96
96
|
assignee="<profile-A>", # same profile, run in parallel
|
|
97
97
|
body="Compare query latency, throughput, and scaling characteristics at our expected data volume (~500GB, 10k QPS peak). Sources: benchmark papers, public case studies, pgbench results if easy.",
|
|
98
98
|
)["task_id"]
|
|
99
99
|
|
|
100
|
-
t3 =
|
|
100
|
+
t3 = TaskCreate(
|
|
101
101
|
title="synthesize migration recommendation",
|
|
102
102
|
assignee="<profile-B>", # whichever profile does synthesis/analysis
|
|
103
103
|
body="Read the findings from T1 (cost) and T2 (performance). Produce a 1-page recommendation with explicit trade-offs and a go/no-go call.",
|
|
104
104
|
parents=[t1, t2],
|
|
105
105
|
)["task_id"]
|
|
106
106
|
|
|
107
|
-
t4 =
|
|
107
|
+
t4 = TaskCreate(
|
|
108
108
|
title="draft decision memo",
|
|
109
109
|
assignee="<profile-C>", # whichever profile drafts user-facing prose
|
|
110
110
|
body="Turn the analyst's recommendation into a 2-page memo for the CTO. Match the tone of previous decision memos in the team's knowledge base.",
|
|
@@ -114,7 +114,7 @@ t4 = kanban_create(
|
|
|
114
114
|
|
|
115
115
|
`parents=[...]` gates promotion — children stay in `todo` until every parent reaches `done`, then auto-promote to `ready`. No manual coordination needed; the dispatcher and dependency engine handle it.
|
|
116
116
|
|
|
117
|
-
If the task graph has dependencies, create the parent cards first, capture their returned ids, and include those ids in the child card's `parents` list during the child `
|
|
117
|
+
If the task graph has dependencies, create the parent cards first, capture their returned ids, and include those ids in the child card's `parents` list during the child `TaskCreate` call. Avoid creating all cards in parallel and linking them afterward; that creates a window where the dispatcher can claim a child before its inputs exist.
|
|
118
118
|
|
|
119
119
|
### Step 4 — Complete your own task
|
|
120
120
|
|
|
@@ -174,14 +174,14 @@ Tell them what you created in plain prose, naming the actual profiles you used:
|
|
|
174
174
|
|
|
175
175
|
**Don't pre-create the whole graph if the shape depends on intermediate findings.** If T3's structure depends on what T1 and T2 find, let T3 exist as a "synthesize findings" task whose own first step is to read parent handoffs and plan the rest. Orchestrators can spawn orchestrators.
|
|
176
176
|
|
|
177
|
-
**Tenant inheritance.** If `HERMES_TENANT` is set in your env, pass `tenant=os.environ.get("HERMES_TENANT")` on every `
|
|
177
|
+
**Tenant inheritance.** If `HERMES_TENANT` is set in your env, pass `tenant=os.environ.get("HERMES_TENANT")` on every `TaskCreate` call so child tasks stay in the same namespace.
|
|
178
178
|
|
|
179
179
|
## Goal-mode cards (persistent workers)
|
|
180
180
|
|
|
181
181
|
By default a dispatched worker gets **one shot** at its card: it does its work, calls `kanban_complete`/`kanban_block`, and exits. For open-ended cards where one turn rarely finishes the job, pass `goal_mode=True` to wrap that worker in a Ralph-style goal loop — the same engine behind the `/goal` slash command:
|
|
182
182
|
|
|
183
183
|
```python
|
|
184
|
-
|
|
184
|
+
TaskCreate(
|
|
185
185
|
title="Translate the full docs site to French",
|
|
186
186
|
body="Acceptance: every page translated, no English left, links intact.",
|
|
187
187
|
assignee="<translator-profile>",
|
|
@@ -99,12 +99,12 @@ Shape `metadata` so downstream parsers (reviewers, aggregators, schedulers) can
|
|
|
99
99
|
|
|
100
100
|
## Claiming cards you actually created
|
|
101
101
|
|
|
102
|
-
If your run produced new kanban tasks (via `
|
|
102
|
+
If your run produced new kanban tasks (via `TaskCreate`), pass the ids in `created_cards` on `kanban_complete`. The kernel verifies each id exists and was created by your profile; any phantom id blocks the completion with an error listing what went wrong, and the rejected attempt is permanently recorded on the task's event log. **Only list ids you captured from a successful `TaskCreate` return value — never invent ids from prose, never paste ids from earlier runs, never claim cards another worker created.**
|
|
103
103
|
|
|
104
104
|
```python
|
|
105
105
|
# GOOD — capture return values, then claim them.
|
|
106
|
-
c1 =
|
|
107
|
-
c2 =
|
|
106
|
+
c1 = TaskCreate(title="remediate SQL injection", assignee="security-worker")
|
|
107
|
+
c2 = TaskCreate(title="fix CSRF middleware", assignee="web-worker")
|
|
108
108
|
|
|
109
109
|
kanban_complete(
|
|
110
110
|
summary="Review done; spawned remediations for both findings.",
|
|
@@ -121,7 +121,7 @@ kanban_complete(
|
|
|
121
121
|
)
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
If a `
|
|
124
|
+
If a `TaskCreate` call fails (exception, tool_error), the card was NOT created — do not include a phantom id for it. Retry the create, or omit the id and mention the failure in your summary. The prose-scan pass also catches `t_<hex>` references in your free-form summary that don't resolve; these don't block the completion but show up as advisory warnings on the task in the dashboard.
|
|
125
125
|
|
|
126
126
|
## Block reasons that get answered fast
|
|
127
127
|
|
|
@@ -164,7 +164,7 @@ You can configure the gateway to receive cross-profile Kanban task notifications
|
|
|
164
164
|
|
|
165
165
|
## Do NOT
|
|
166
166
|
|
|
167
|
-
- Call `
|
|
167
|
+
- Call `Agent` as a substitute for `TaskCreate`. `Agent` is for short reasoning subtasks inside YOUR run; `TaskCreate` is for cross-agent handoffs that outlive one API loop.
|
|
168
168
|
- Call `clarify` to ask the human a question. You are running headless — there is no live user to answer. The call will time out (default ~120s) and the task will sit silently in `running` with no signal that it needs input. Use `kanban_comment` (context) + `kanban_block(reason=...)` (decision needed) instead — the task surfaces on the board as blocked, the operator sees it, unblocks with their answer in a comment, and you respawn with the thread.
|
|
169
169
|
- Modify files outside `$HERMES_KANBAN_WORKSPACE` unless the task body says to.
|
|
170
170
|
- Create follow-up tasks assigned to yourself — assign to the right specialist.
|
|
@@ -184,7 +184,7 @@ Every tool has a CLI equivalent for human operators and scripts:
|
|
|
184
184
|
- `kanban_show` ↔ `hermes kanban show <id> --json`
|
|
185
185
|
- `kanban_complete` ↔ `hermes kanban complete <id> --summary "..." --metadata '{...}'`
|
|
186
186
|
- `kanban_block` ↔ `hermes kanban block <id> "reason"`
|
|
187
|
-
- `
|
|
187
|
+
- `TaskCreate` ↔ `hermes kanban create "title" --assignee <profile> [--parent <id>]`
|
|
188
188
|
- etc.
|
|
189
189
|
|
|
190
190
|
Use the tools from inside an agent; the CLI exists for the human at the terminal.
|
|
@@ -52,7 +52,7 @@ python "$SKILL_DIR/scripts/generate_meme.py" --search "disaster"
|
|
|
52
52
|
3. Write short captions for each field (8-12 words max per field, shorter is better).
|
|
53
53
|
4. Find the skill's script directory:
|
|
54
54
|
```
|
|
55
|
-
SKILL_DIR=$(dirname "$(find ~/.
|
|
55
|
+
SKILL_DIR=$(dirname "$(find ~/.mindforge/skills -path '*/meme-generation/SKILL.md' 2>/dev/null | head -1)")
|
|
56
56
|
```
|
|
57
57
|
5. Run the generator:
|
|
58
58
|
```bash
|