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
|
@@ -127,7 +127,7 @@ pixel_art("in.png", "out.png", preset="snes", palette="PICO_8", block=6)
|
|
|
127
127
|
|
|
128
128
|
```python
|
|
129
129
|
import sys
|
|
130
|
-
sys.path.insert(0, "/
|
|
130
|
+
sys.path.insert(0, "<path-to-this-skill>/scripts") # e.g. ~/.agent/skills/pixel-art/scripts
|
|
131
131
|
from pixel_art import pixel_art
|
|
132
132
|
from pixel_art_video import pixel_art_video
|
|
133
133
|
|
|
@@ -149,7 +149,7 @@ pixel_art_video(
|
|
|
149
149
|
### CLI
|
|
150
150
|
|
|
151
151
|
```bash
|
|
152
|
-
cd /
|
|
152
|
+
cd <path-to-this-skill>/scripts # e.g. ~/.agent/skills/pixel-art/scripts
|
|
153
153
|
|
|
154
154
|
python pixel_art.py in.jpg out.png --preset gameboy
|
|
155
155
|
python pixel_art.py in.jpg out.png --preset snes --palette PICO_8 --block 6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan
|
|
3
|
-
description: "Plan mode: write an actionable markdown plan to .
|
|
3
|
+
description: "Plan mode: write an actionable markdown plan to .planning/plans/, no execution. Bite-sized tasks, exact paths, complete code."
|
|
4
4
|
version: 2.0.0
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ For this turn, you are planning only.
|
|
|
16
16
|
- Do not edit project files except the plan markdown file.
|
|
17
17
|
- Do not run mutating terminal commands, commit, push, or perform external actions.
|
|
18
18
|
- You may inspect the repo or other context with read-only commands/tools when needed.
|
|
19
|
-
- Your deliverable is a markdown plan saved inside the active workspace under `.
|
|
19
|
+
- Your deliverable is a markdown plan saved inside the active workspace under `.planning/plans/`.
|
|
20
20
|
|
|
21
21
|
## Output requirements
|
|
22
22
|
|
|
@@ -35,13 +35,13 @@ If the task is code-related, include exact file paths, likely test targets, and
|
|
|
35
35
|
|
|
36
36
|
## Save location
|
|
37
37
|
|
|
38
|
-
Save the plan with `
|
|
39
|
-
- `.
|
|
38
|
+
Save the plan with `Write` under:
|
|
39
|
+
- `.planning/plans/YYYY-MM-DD_HHMMSS-<slug>.md`
|
|
40
40
|
|
|
41
41
|
Treat that as relative to the active working directory / backend workspace. the agent file tools are backend-aware, so using this relative path keeps the plan with the workspace on local, docker, ssh, modal, and daytona backends.
|
|
42
42
|
|
|
43
43
|
If the runtime provides a specific target path, use that exact path.
|
|
44
|
-
If not, create a sensible timestamped filename yourself under `.
|
|
44
|
+
If not, create a sensible timestamped filename yourself under `.planning/plans/`.
|
|
45
45
|
|
|
46
46
|
## Interaction style
|
|
47
47
|
|
|
@@ -188,16 +188,16 @@ Use tools to understand the project:
|
|
|
188
188
|
|
|
189
189
|
```python
|
|
190
190
|
# Understand project structure
|
|
191
|
-
|
|
191
|
+
Grep("*.py", target="files", path="src/")
|
|
192
192
|
|
|
193
193
|
# Look at similar features
|
|
194
|
-
|
|
194
|
+
Grep("similar_pattern", path="src/", file_glob="*.py")
|
|
195
195
|
|
|
196
196
|
# Check existing tests
|
|
197
|
-
|
|
197
|
+
Grep("*.py", target="files", path="tests/")
|
|
198
198
|
|
|
199
199
|
# Read key files
|
|
200
|
-
|
|
200
|
+
Read("src/app.py")
|
|
201
201
|
```
|
|
202
202
|
|
|
203
203
|
### Step 3: Design Approach
|
|
@@ -311,7 +311,7 @@ After saving the plan, offer the execution approach:
|
|
|
311
311
|
**"Plan complete and saved. Ready to execute using subagent-driven-development — I'll dispatch a fresh subagent per task with two-stage review (spec compliance then code quality). Shall I proceed?"**
|
|
312
312
|
|
|
313
313
|
When executing, use the `subagent-driven-development` skill:
|
|
314
|
-
- Fresh `
|
|
314
|
+
- Fresh `Agent` per task with full context
|
|
315
315
|
- Spec compliance review after each task
|
|
316
316
|
- Code quality review after spec passes
|
|
317
317
|
- Proceed only when both reviews approve
|
|
@@ -117,13 +117,13 @@ Quick scan before dispatching the reviewer:
|
|
|
117
117
|
|
|
118
118
|
## Step 5 — Independent reviewer subagent
|
|
119
119
|
|
|
120
|
-
Call `
|
|
120
|
+
Call `Agent` directly — it is NOT available inside Bash or scripts.
|
|
121
121
|
|
|
122
122
|
The reviewer gets ONLY the diff and static scan results. No shared context with
|
|
123
123
|
the implementer. Fail-closed: unparseable response = fail.
|
|
124
124
|
|
|
125
125
|
```python
|
|
126
|
-
|
|
126
|
+
Agent(
|
|
127
127
|
goal="""You are an independent code reviewer. You have no context about how
|
|
128
128
|
these changes were made. Review the git diff and return ONLY valid JSON.
|
|
129
129
|
|
|
@@ -162,7 +162,6 @@ Return ONLY this JSON:
|
|
|
162
162
|
"summary": "one sentence verdict"
|
|
163
163
|
}""",
|
|
164
164
|
context="Independent code review. Return only JSON verdict.",
|
|
165
|
-
toolsets=["terminal"]
|
|
166
165
|
)
|
|
167
166
|
```
|
|
168
167
|
|
|
@@ -192,7 +191,7 @@ Spawn a THIRD agent context — not you (the implementer), not the reviewer.
|
|
|
192
191
|
It fixes ONLY the reported issues:
|
|
193
192
|
|
|
194
193
|
```python
|
|
195
|
-
|
|
194
|
+
Agent(
|
|
196
195
|
goal="""You are a code fix agent. Fix ONLY the specific issues listed below.
|
|
197
196
|
Do NOT refactor, rename, or change anything else. Do NOT add features.
|
|
198
197
|
|
|
@@ -208,7 +207,6 @@ Current diff for context:
|
|
|
208
207
|
|
|
209
208
|
Fix each issue precisely. Describe what you changed and why.""",
|
|
210
209
|
context="Fix only the reported issues. Do not change anything else.",
|
|
211
|
-
toolsets=["terminal", "file"]
|
|
212
210
|
)
|
|
213
211
|
```
|
|
214
212
|
|
|
@@ -266,7 +264,7 @@ tests exist, tests pass, no regressions.
|
|
|
266
264
|
- **Empty diff** — check `git status`, tell user nothing to verify
|
|
267
265
|
- **Not a git repo** — skip and tell user
|
|
268
266
|
- **Large diff (>15k chars)** — split by file, review each separately
|
|
269
|
-
- **
|
|
267
|
+
- **Agent returns non-JSON** — retry once with stricter prompt, then treat as FAIL
|
|
270
268
|
- **False positives** — if reviewer flags something intentional, note it in fix prompt
|
|
271
269
|
- **No test framework found** — skip regression check, reviewer verdict still runs
|
|
272
270
|
- **Lint tools not installed** — skip that check silently, don't fail
|
|
@@ -236,17 +236,17 @@ find . -name "*.bib"
|
|
|
236
236
|
|
|
237
237
|
### Step 1.2: Search for Related Work
|
|
238
238
|
|
|
239
|
-
**Load the `arxiv` skill** for structured paper discovery: `
|
|
239
|
+
**Load the `arxiv` skill** for structured paper discovery: `Skill(skill="arxiv")`. It provides arXiv REST API search, Semantic Scholar citation graphs, author profiles, and BibTeX generation.
|
|
240
240
|
|
|
241
|
-
Use `
|
|
241
|
+
Use `WebSearch` for broad discovery, `WebFetch` for fetching specific papers:
|
|
242
242
|
|
|
243
243
|
```
|
|
244
|
-
# Via
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
# Via WebSearch:
|
|
245
|
+
WebSearch("[main technique] + [application domain] site:arxiv.org")
|
|
246
|
+
WebSearch("[baseline method] comparison ICML NeurIPS 2024")
|
|
247
247
|
|
|
248
|
-
# Via
|
|
249
|
-
|
|
248
|
+
# Via WebFetch (for specific papers):
|
|
249
|
+
WebFetch("https://arxiv.org/abs/2303.17651")
|
|
250
250
|
```
|
|
251
251
|
|
|
252
252
|
Additional search queries to try:
|
|
@@ -293,7 +293,7 @@ Round 3 (Targeted): Fill specific gaps
|
|
|
293
293
|
|
|
294
294
|
**When to stop**: If a round returns >80% papers already in your collection, the search is saturated. Typically 2-3 rounds suffice. For survey papers, expect 4-5 rounds.
|
|
295
295
|
|
|
296
|
-
**For agent-based workflows**: Delegate each round's queries in parallel via `
|
|
296
|
+
**For agent-based workflows**: Delegate each round's queries in parallel via `Agent`. Collect results, deduplicate, then generate the next round's queries from the combined learnings.
|
|
297
297
|
|
|
298
298
|
### Step 1.3: Verify Every Citation
|
|
299
299
|
|
|
@@ -2114,12 +2114,12 @@ Compose this skill with other skills for specific phases:
|
|
|
2114
2114
|
|
|
2115
2115
|
| Skill | When to Use | How to Load |
|
|
2116
2116
|
|-------|-------------|-------------|
|
|
2117
|
-
| **arxiv** | Phase 1 (Literature Review): searching arXiv, generating BibTeX, finding related papers via Semantic Scholar | `
|
|
2118
|
-
| **subagent-driven-development** | Phase 5 (Drafting): parallel section writing with 2-stage review (spec compliance then quality) | `
|
|
2119
|
-
| **plan** | Phase 0 (Setup): creating structured plans before execution. Writes to `.
|
|
2117
|
+
| **arxiv** | Phase 1 (Literature Review): searching arXiv, generating BibTeX, finding related papers via Semantic Scholar | `Skill(skill="arxiv")` |
|
|
2118
|
+
| **subagent-driven-development** | Phase 5 (Drafting): parallel section writing with 2-stage review (spec compliance then quality) | `Skill(skill="subagent-driven-development")` |
|
|
2119
|
+
| **plan** | Phase 0 (Setup): creating structured plans before execution. Writes to `.planning/plans/` | `Skill(skill="plan")` |
|
|
2120
2120
|
| **qmd** | Phase 1 (Literature): searching local knowledge bases (notes, transcripts, docs) via hybrid BM25+vector search | Install: `skill_manage("install", "qmd")` |
|
|
2121
|
-
| **
|
|
2122
|
-
| **
|
|
2121
|
+
| **concept-diagrams** | Phase 4-5: creating Excalidraw-based figures and architecture diagrams | `Skill(skill="concept-diagrams")` |
|
|
2122
|
+
| **jupyter-live-kernel** | Phase 4 (Analysis): Jupyter live kernel for interactive analysis and visualization | `Skill(skill="jupyter-live-kernel")` |
|
|
2123
2123
|
|
|
2124
2124
|
**This skill supersedes `ml-paper-writing`** — it contains all of ml-paper-writing's content plus the full experiment/analysis pipeline and autoreason methodology.
|
|
2125
2125
|
|
|
@@ -2127,13 +2127,13 @@ Compose this skill with other skills for specific phases:
|
|
|
2127
2127
|
|
|
2128
2128
|
| Tool | Usage in This Pipeline |
|
|
2129
2129
|
|------|----------------------|
|
|
2130
|
-
| **`
|
|
2130
|
+
| **`Bash`** | LaTeX compilation (`latexmk -pdf`), git operations, launching experiments (`nohup python run.py &`), process checks |
|
|
2131
2131
|
| **`process`** | Background experiment management: `process("start", ...)`, `process("poll", pid)`, `process("log", pid)`, `process("kill", pid)` |
|
|
2132
|
-
| **`
|
|
2133
|
-
| **`
|
|
2134
|
-
| **`
|
|
2135
|
-
| **`
|
|
2136
|
-
| **`
|
|
2132
|
+
| **`Bash`** | Run Python for citation verification, statistical analysis, data aggregation. Has tool access via RPC. |
|
|
2133
|
+
| **`Read`** / **`Write`** / **`Edit`** | Paper editing, experiment scripts, result files. Use `Edit` for targeted edits to large .tex files. |
|
|
2134
|
+
| **`WebSearch`** | Literature discovery: `WebSearch("transformer attention mechanism 2024")` |
|
|
2135
|
+
| **`WebFetch`** | Fetch paper content, verify citations: `WebFetch("https://arxiv.org/abs/2303.17651")` |
|
|
2136
|
+
| **`Agent`** | **Parallel section drafting** — spawn isolated subagents for each section. Also for concurrent citation verification. |
|
|
2137
2137
|
| **`todo`** | Primary state tracker across sessions. Update after every phase transition. |
|
|
2138
2138
|
| **`memory`** | Persist key decisions across sessions: contribution framing, venue choice, reviewer feedback. |
|
|
2139
2139
|
| **`cronjob`** | Schedule experiment monitoring, deadline countdowns, automated arXiv checks. |
|
|
@@ -2144,32 +2144,32 @@ Compose this skill with other skills for specific phases:
|
|
|
2144
2144
|
|
|
2145
2145
|
**Experiment monitoring** (most common):
|
|
2146
2146
|
```
|
|
2147
|
-
|
|
2148
|
-
→
|
|
2149
|
-
→
|
|
2150
|
-
→
|
|
2151
|
-
→
|
|
2147
|
+
Bash("ps aux | grep <pattern>")
|
|
2148
|
+
→ Bash("tail -30 <logfile>")
|
|
2149
|
+
→ Bash("ls results/")
|
|
2150
|
+
→ Bash("analyze results JSON, compute metrics")
|
|
2151
|
+
→ Bash("git add -A && git commit -m '<descriptive message>' && git push")
|
|
2152
2152
|
→ send_message("Experiment complete: <summary>")
|
|
2153
2153
|
```
|
|
2154
2154
|
|
|
2155
2155
|
**Parallel section drafting** (using delegation):
|
|
2156
2156
|
```
|
|
2157
|
-
|
|
2157
|
+
Agent("Draft the Methods section based on these experiment scripts and configs.
|
|
2158
2158
|
Include: pseudocode, all hyperparameters, architectural details sufficient for
|
|
2159
2159
|
reproduction. Write in LaTeX using the neurips2025 template conventions.")
|
|
2160
2160
|
|
|
2161
|
-
|
|
2161
|
+
Agent("Draft the Related Work section. Use WebSearch and WebFetch to
|
|
2162
2162
|
find papers. Verify every citation via Semantic Scholar. Group by methodology.")
|
|
2163
2163
|
|
|
2164
|
-
|
|
2164
|
+
Agent("Draft the Experiments section. Read all result files in results/.
|
|
2165
2165
|
State which claim each experiment supports. Include error bars and significance.")
|
|
2166
2166
|
```
|
|
2167
2167
|
|
|
2168
2168
|
Each delegate runs as a **fresh subagent** with no shared context — provide all necessary information in the prompt. Collect outputs and integrate.
|
|
2169
2169
|
|
|
2170
|
-
**Citation verification** (using
|
|
2170
|
+
**Citation verification** (using Bash):
|
|
2171
2171
|
```python
|
|
2172
|
-
# In
|
|
2172
|
+
# In Bash:
|
|
2173
2173
|
from semanticscholar import SemanticScholar
|
|
2174
2174
|
import requests
|
|
2175
2175
|
|
|
@@ -2210,9 +2210,9 @@ todo("update", id=1, status="completed")
|
|
|
2210
2210
|
```
|
|
2211
2211
|
1. todo("list") # Check current task list
|
|
2212
2212
|
2. memory("read") # Recall key decisions
|
|
2213
|
-
3.
|
|
2214
|
-
4.
|
|
2215
|
-
5.
|
|
2213
|
+
3. Bash("git log --oneline -10") # Check recent commits
|
|
2214
|
+
4. Bash("ps aux | grep python") # Check running experiments
|
|
2215
|
+
5. Bash("ls results/ | tail -20") # Check for new results
|
|
2216
2216
|
6. Report status to user, ask for direction
|
|
2217
2217
|
```
|
|
2218
2218
|
|
|
@@ -6,7 +6,7 @@ version: 1.2.0
|
|
|
6
6
|
|
|
7
7
|
# API Testing & Debugging
|
|
8
8
|
|
|
9
|
-
Drive REST and GraphQL diagnosis through tools — `
|
|
9
|
+
Drive REST and GraphQL diagnosis through tools — `Bash` for `curl`, `Bash` for Python `requests`, `WebFetch` for vendor docs. Isolate the failing layer before guessing at the fix.
|
|
10
10
|
|
|
11
11
|
## When to Use
|
|
12
12
|
|
|
@@ -39,25 +39,25 @@ Skip for UI rendering, DB query tuning, or DNS/firewall infra (escalate).
|
|
|
39
39
|
|
|
40
40
|
```python
|
|
41
41
|
# Verbose request/response exchange
|
|
42
|
-
|
|
42
|
+
Bash('curl -v https://api.example.com/users/1')
|
|
43
43
|
|
|
44
44
|
# POST with JSON
|
|
45
|
-
|
|
45
|
+
Bash("""curl -X POST https://api.example.com/users \\
|
|
46
46
|
-H 'Content-Type: application/json' \\
|
|
47
47
|
-H "Authorization: Bearer $TOKEN" \\
|
|
48
48
|
-d '{"name":"test","email":"test@example.com"}'""")
|
|
49
49
|
|
|
50
50
|
# Headers only
|
|
51
|
-
|
|
51
|
+
Bash('curl -sI https://api.example.com/health')
|
|
52
52
|
|
|
53
53
|
# Pretty-print JSON
|
|
54
|
-
|
|
54
|
+
Bash('curl -s https://api.example.com/users | python3 -m json.tool')
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
### GraphQL via terminal
|
|
58
58
|
|
|
59
59
|
```python
|
|
60
|
-
|
|
60
|
+
Bash("""curl -X POST https://api.example.com/graphql \\
|
|
61
61
|
-H 'Content-Type: application/json' \\
|
|
62
62
|
-H "Authorization: Bearer $TOKEN" \\
|
|
63
63
|
-d '{"query":"{ user(id: 1) { name email } }"}'""")
|
|
@@ -66,7 +66,7 @@ terminal("""curl -X POST https://api.example.com/graphql \\
|
|
|
66
66
|
**GraphQL gotcha:** servers often return HTTP 200 even when the query failed. Always inspect the `errors` field regardless of status code:
|
|
67
67
|
|
|
68
68
|
```python
|
|
69
|
-
|
|
69
|
+
Bash('''
|
|
70
70
|
import os, requests
|
|
71
71
|
resp = requests.post(
|
|
72
72
|
"https://api.example.com/graphql",
|
|
@@ -82,10 +82,10 @@ print(data.get("data"))
|
|
|
82
82
|
''')
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
### Python (requests) via
|
|
85
|
+
### Python (requests) via Bash
|
|
86
86
|
|
|
87
87
|
```python
|
|
88
|
-
|
|
88
|
+
Bash('''
|
|
89
89
|
import requests
|
|
90
90
|
resp = requests.get(
|
|
91
91
|
"https://api.example.com/users/1",
|
|
@@ -102,8 +102,8 @@ print(resp.text[:500])
|
|
|
102
102
|
### Step 1 — Connectivity
|
|
103
103
|
|
|
104
104
|
```python
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
Bash('nslookup api.example.com')
|
|
106
|
+
Bash('curl -v --connect-timeout 5 https://api.example.com/health')
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
Failures: DNS not resolving, firewall, VPN required, proxy missing.
|
|
@@ -113,14 +113,14 @@ Failures: DNS not resolving, firewall, VPN required, proxy missing.
|
|
|
113
113
|
Distinguish *can't reach* from *reaches but slow*:
|
|
114
114
|
|
|
115
115
|
```python
|
|
116
|
-
|
|
116
|
+
Bash('''curl -w "dns:%{time_namelookup}s connect:%{time_connect}s tls:%{time_appconnect}s ttfb:%{time_starttransfer}s total:%{time_total}s\\n" \\
|
|
117
117
|
-o /dev/null -s https://api.example.com/endpoint''')
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
In Python, always pass a tuple timeout — `requests` has no default and will hang forever:
|
|
121
121
|
|
|
122
122
|
```python
|
|
123
|
-
|
|
123
|
+
Bash('''
|
|
124
124
|
import requests
|
|
125
125
|
from requests.exceptions import ConnectTimeout, ReadTimeout
|
|
126
126
|
try:
|
|
@@ -137,7 +137,7 @@ Diagnosis: high `time_connect` is network/firewall; high `time_starttransfer` wi
|
|
|
137
137
|
### Step 2 — TLS/SSL
|
|
138
138
|
|
|
139
139
|
```python
|
|
140
|
-
|
|
140
|
+
Bash('curl -vI https://api.example.com 2>&1 | grep -E "SSL|subject|expire|issuer"')
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
Failures: expired cert, self-signed, hostname mismatch, missing CA bundle. Use `-k` only for ad-hoc debug, never in code.
|
|
@@ -146,10 +146,10 @@ Failures: expired cert, self-signed, hostname mismatch, missing CA bundle. Use `
|
|
|
146
146
|
|
|
147
147
|
```python
|
|
148
148
|
# Token validity check
|
|
149
|
-
|
|
149
|
+
Bash('curl -s -o /dev/null -w "%{http_code}\\n" -H "Authorization: Bearer $TOKEN" https://api.example.com/me')
|
|
150
150
|
|
|
151
151
|
# Decode JWT exp claim — handles base64url padding correctly
|
|
152
|
-
|
|
152
|
+
Bash('''
|
|
153
153
|
import json, base64, os
|
|
154
154
|
tok = os.environ["TOKEN"]
|
|
155
155
|
payload = tok.split(".")[1]
|
|
@@ -167,7 +167,7 @@ Checklist:
|
|
|
167
167
|
### Step 4 — Request Format
|
|
168
168
|
|
|
169
169
|
```python
|
|
170
|
-
|
|
170
|
+
Bash("""curl -v -X POST https://api.example.com/endpoint \\
|
|
171
171
|
-H 'Content-Type: application/json' \\
|
|
172
172
|
-d '{"key":"value"}' 2>&1""")
|
|
173
173
|
```
|
|
@@ -195,7 +195,7 @@ Common: form-encoded vs JSON, missing required fields, wrong HTTP method, unenco
|
|
|
195
195
|
Always inspect content-type before calling `.json()`:
|
|
196
196
|
|
|
197
197
|
```python
|
|
198
|
-
|
|
198
|
+
Bash('''
|
|
199
199
|
import requests
|
|
200
200
|
resp = requests.post(url, json=payload, timeout=10)
|
|
201
201
|
print(f"status={resp.status_code}")
|
|
@@ -260,7 +260,7 @@ The error body usually names the bad fields. Check:
|
|
|
260
260
|
Check `Retry-After` and `X-RateLimit-*` headers. Exponential backoff:
|
|
261
261
|
|
|
262
262
|
```python
|
|
263
|
-
|
|
263
|
+
Bash('''
|
|
264
264
|
import time, requests
|
|
265
265
|
|
|
266
266
|
def with_backoff(method, url, **kwargs):
|
|
@@ -296,7 +296,7 @@ For all 5xx: backoff with jitter, alert on persistence.
|
|
|
296
296
|
Catch schema drift before it hits production:
|
|
297
297
|
|
|
298
298
|
```python
|
|
299
|
-
|
|
299
|
+
Bash('''
|
|
300
300
|
import requests
|
|
301
301
|
|
|
302
302
|
def validate_user(data: dict) -> list[str]:
|
|
@@ -323,7 +323,7 @@ Run after API upgrades, when integrating new third parties, or in CI smoke tests
|
|
|
323
323
|
Always capture the provider's request ID — fastest path to vendor support:
|
|
324
324
|
|
|
325
325
|
```python
|
|
326
|
-
|
|
326
|
+
Bash('''
|
|
327
327
|
import requests
|
|
328
328
|
resp = requests.post(url, json=payload, headers=headers, timeout=10)
|
|
329
329
|
request_id = (
|
|
@@ -350,7 +350,7 @@ Repro: curl -X POST … (auth: <REDACTED>)
|
|
|
350
350
|
|
|
351
351
|
## Regression Test Template
|
|
352
352
|
|
|
353
|
-
Drop this into `tests/` and run via `
|
|
353
|
+
Drop this into `tests/` and run via `Bash('pytest tests/test_api_smoke.py -v')`:
|
|
354
354
|
|
|
355
355
|
```python
|
|
356
356
|
import os, requests, pytest
|
|
@@ -415,16 +415,16 @@ def redact_auth(headers: dict) -> dict:
|
|
|
415
415
|
### terminal — for curl, dig, openssl
|
|
416
416
|
|
|
417
417
|
```python
|
|
418
|
-
|
|
419
|
-
|
|
418
|
+
Bash('curl -sI https://api.example.com')
|
|
419
|
+
Bash('openssl s_client -connect api.example.com:443 -servername api.example.com </dev/null 2>/dev/null | openssl x509 -noout -dates')
|
|
420
420
|
```
|
|
421
421
|
|
|
422
|
-
###
|
|
422
|
+
### Bash — for multi-step Python flows
|
|
423
423
|
|
|
424
|
-
When debugging spans auth → fetch → paginate → validate, use `
|
|
424
|
+
When debugging spans auth → fetch → paginate → validate, use `Bash`. Variables persist for the script, results print to stdout, no risk of token spam in your context:
|
|
425
425
|
|
|
426
426
|
```python
|
|
427
|
-
|
|
427
|
+
Bash('''
|
|
428
428
|
import os, requests
|
|
429
429
|
|
|
430
430
|
token = os.environ["API_TOKEN"]
|
|
@@ -449,18 +449,18 @@ print(f"users={len(all_users)}")
|
|
|
449
449
|
''')
|
|
450
450
|
```
|
|
451
451
|
|
|
452
|
-
###
|
|
452
|
+
### WebFetch — for vendor API docs
|
|
453
453
|
|
|
454
454
|
Pull the spec for the endpoint you're debugging instead of guessing:
|
|
455
455
|
|
|
456
456
|
```python
|
|
457
|
-
|
|
457
|
+
WebFetch(urls=["https://docs.example.com/api/v1/users"])
|
|
458
458
|
```
|
|
459
459
|
|
|
460
|
-
###
|
|
460
|
+
### Agent — for full CRUD test sweeps
|
|
461
461
|
|
|
462
462
|
```python
|
|
463
|
-
|
|
463
|
+
Agent(
|
|
464
464
|
goal="Test all CRUD endpoints for /api/v1/users",
|
|
465
465
|
context="""
|
|
466
466
|
Follow the rest-graphql-debug skill (optional-skills/software-development/rest-graphql-debug).
|
|
@@ -474,7 +474,6 @@ For each verb (POST, GET, PATCH, DELETE):
|
|
|
474
474
|
|
|
475
475
|
Output: pass/fail per endpoint + correlation IDs for failures.
|
|
476
476
|
""",
|
|
477
|
-
toolsets=["terminal", "file"],
|
|
478
477
|
)
|
|
479
478
|
```
|
|
480
479
|
|
|
@@ -18,7 +18,7 @@ prerequisites:
|
|
|
18
18
|
- Scraping JS-rendered pages that need a real browser
|
|
19
19
|
- Bypassing Cloudflare Turnstile or bot detection
|
|
20
20
|
- Crawling multiple pages with a spider
|
|
21
|
-
- When the built-in `
|
|
21
|
+
- When the built-in `WebFetch` tool does not return the data you need
|
|
22
22
|
|
|
23
23
|
## Installation
|
|
24
24
|
|
|
@@ -70,7 +70,7 @@ sherlock --print-found --no-color "<username>" --timeout 90
|
|
|
70
70
|
|
|
71
71
|
### 4. Execute Search
|
|
72
72
|
|
|
73
|
-
Run via the `
|
|
73
|
+
Run via the `Bash` tool. The command typically takes 30-120 seconds depending on network conditions and site count.
|
|
74
74
|
|
|
75
75
|
**Example terminal call:**
|
|
76
76
|
```json
|
|
@@ -68,15 +68,13 @@ before proceeding.
|
|
|
68
68
|
|
|
69
69
|
### Phase 2 — Launch three reviewers in parallel
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
it's well within the `delegation.max_concurrent_children` budget on any
|
|
74
|
-
default install.
|
|
71
|
+
Make three separate `Agent` tool calls **in the same response** so they run
|
|
72
|
+
concurrently. Three is the right fan-out for this pattern.
|
|
75
73
|
|
|
76
74
|
Give **every** reviewer the **complete diff** (not fragments — cross-file
|
|
77
75
|
issues hide in the gaps) plus the absolute repo path so they can search the
|
|
78
|
-
wider codebase. Each reviewer gets `
|
|
79
|
-
|
|
76
|
+
wider codebase. Each reviewer gets `Bash` (for `git`), `Read`, and `Grep`
|
|
77
|
+
so they can inspect the full diff and the wider codebase.
|
|
80
78
|
|
|
81
79
|
Tell each reviewer to:
|
|
82
80
|
- Search the existing codebase for evidence (don't reason from the diff alone).
|
|
@@ -131,7 +129,7 @@ Wait for all three to return (batch mode returns them together).
|
|
|
131
129
|
Don't apply a perf "fix" that hurts clarity unless the path is genuinely
|
|
132
130
|
hot. When two suggestions are mutually exclusive and both defensible, pick
|
|
133
131
|
the one that touches less code and note the alternative.
|
|
134
|
-
4. **Apply** the surviving fixes directly with `
|
|
132
|
+
4. **Apply** the surviving fixes directly with `Edit` / `Write` — unless
|
|
135
133
|
the user asked for a dry run, in which case present the list and ask first.
|
|
136
134
|
5. **Verify** you didn't break anything: run the project's targeted tests for
|
|
137
135
|
the touched files (not the full suite), and re-run any linter/type check the
|
|
@@ -103,7 +103,7 @@ Pick the closest existing category. Don't invent new top-level categories casual
|
|
|
103
103
|
```
|
|
104
104
|
Read 2-3 peer SKILL.md files to match tone and structure.
|
|
105
105
|
2. **Check validator constraints** in `tools/skill_manager_tool.py` if unsure.
|
|
106
|
-
3. **Draft** with `
|
|
106
|
+
3. **Draft** with `Write` to `skills/<category>/<name>/SKILL.md`.
|
|
107
107
|
4. **Validate locally**:
|
|
108
108
|
```python
|
|
109
109
|
import yaml, re, pathlib
|
|
@@ -125,13 +125,13 @@ Pick the closest existing category. Don't invent new top-level categories casual
|
|
|
125
125
|
## Editing Existing In-Repo Skills
|
|
126
126
|
|
|
127
127
|
- **Small fix (typo, added pitfall, tightened trigger):** `skill_manage(action='patch', name=..., old_string=..., new_string=...)` works fine on in-repo skills.
|
|
128
|
-
- **Major rewrite:** `
|
|
129
|
-
- **Adding supporting files:** `
|
|
128
|
+
- **Major rewrite:** `Write` the whole SKILL.md. `skill_manage(action='edit')` also works but requires supplying the full new content.
|
|
129
|
+
- **Adding supporting files:** `Write` to `skills/<category>/<name>/references/<file>.md`, `templates/<file>`, or `scripts/<file>`. `skill_manage(action='write_file')` also works and enforces the references/templates/scripts/assets subdir allowlist.
|
|
130
130
|
- **Always commit** the edit — in-repo skills are source, not runtime state.
|
|
131
131
|
|
|
132
132
|
## Common Pitfalls
|
|
133
133
|
|
|
134
|
-
1. **Using `skill_manage(action='create')` for an in-repo skill.** It writes to `~/.agent/skills/`, not the repo tree. Use `
|
|
134
|
+
1. **Using `skill_manage(action='create')` for an in-repo skill.** It writes to `~/.agent/skills/`, not the repo tree. Use `Write` for in-repo creation.
|
|
135
135
|
|
|
136
136
|
2. **Leading whitespace before `---`.** The validator checks `content.startswith("---")`; any leading blank line or BOM fails validation.
|
|
137
137
|
|
|
@@ -71,11 +71,11 @@ Spikes are not research-free — you research enough to pick the right approach,
|
|
|
71
71
|
|
|
72
72
|
Use tools for the research step:
|
|
73
73
|
|
|
74
|
-
- `
|
|
75
|
-
- `
|
|
76
|
-
- `
|
|
74
|
+
- `WebSearch("python websocket streaming libraries 2025")` — find candidates
|
|
75
|
+
- `WebFetch(urls=["https://websockets.readthedocs.io/..."])` — read the actual docs (returns markdown)
|
|
76
|
+
- `Bash("pip show websockets | grep Version")` — check what's installed in the project's venv
|
|
77
77
|
|
|
78
|
-
For libraries without docs pages, clone and read their `README.md` / `examples/` via `
|
|
78
|
+
For libraries without docs pages, clone and read their `README.md` / `examples/` via `Read`. WebFetch MCP (if the user has it configured) is also a good source — `mcp_*_resolve-library-id` then `mcp_*_query-docs`.
|
|
79
79
|
|
|
80
80
|
### 4. Build
|
|
81
81
|
|
|
@@ -108,20 +108,18 @@ spikes/
|
|
|
108
108
|
**Building one spike** — a typical tool sequence:
|
|
109
109
|
|
|
110
110
|
```
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
Bash("mkdir -p spikes/001-websocket-streaming")
|
|
112
|
+
Write("spikes/001-websocket-streaming/README.md", "# 001: websocket-streaming\n\n...")
|
|
113
|
+
Write("spikes/001-websocket-streaming/main.py", "...")
|
|
114
|
+
Bash("cd spikes/001-websocket-streaming && python3 main.py")
|
|
115
115
|
# Observe output, iterate.
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
**Parallel comparison spikes (002a / 002b) — delegate.** When two approaches can run in parallel and both need real engineering (not 10-line prototypes), fan out with `
|
|
118
|
+
**Parallel comparison spikes (002a / 002b) — delegate.** When two approaches can run in parallel and both need real engineering (not 10-line prototypes), fan out with two `Agent` tool calls in the same response:
|
|
119
119
|
|
|
120
120
|
```
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
{"goal": "Build 002b-pdf-parse-camelot: ...", "toolsets": ["terminal", "file", "web"]},
|
|
124
|
-
])
|
|
121
|
+
Agent(prompt="Build 002a-pdf-parse-pdfjs: ...")
|
|
122
|
+
Agent(prompt="Build 002b-pdf-parse-camelot: ...")
|
|
125
123
|
```
|
|
126
124
|
|
|
127
125
|
Each subagent returns its own verdict; you write the head-to-head.
|