wicked-garden 12.27.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/.claude-plugin/archetypes.json +166 -0
- package/.claude-plugin/components.json +75 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.claude-plugin/plugin.json +174 -0
- package/.claude-plugin/specialist.json +48 -0
- package/.claude-plugin/stack-registry.json +96 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +712 -0
- package/CONTRIBUTING.md +99 -0
- package/ETHOS.md +83 -0
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
- package/agents/agentic/architect.md +449 -0
- package/agents/agentic/performance-analyst.md +702 -0
- package/agents/agentic/safety-reviewer.md +662 -0
- package/agents/crew/implementer.md +163 -0
- package/agents/crew/researcher.md +94 -0
- package/agents/crew/reviewer.md +184 -0
- package/agents/data/data-engineer.md +227 -0
- package/agents/engineering/api-documentarian.md +440 -0
- package/agents/engineering/migration-engineer.md +301 -0
- package/agents/engineering/solution-architect.md +208 -0
- package/agents/jam/brainstorm-facilitator.md +297 -0
- package/agents/jam/council.md +322 -0
- package/agents/jam/quick-facilitator.md +85 -0
- package/agents/persona/persona-agent.md +121 -0
- package/agents/platform/compliance-officer.md +266 -0
- package/agents/platform/privacy-expert.md +496 -0
- package/agents/platform/security-engineer.md +287 -0
- package/agents/product/a11y-expert.md +323 -0
- package/agents/product/requirements-analyst.md +238 -0
- package/agents/product/ui-reviewer.md +180 -0
- package/agents/product/ux-designer.md +199 -0
- package/agents/product/value-strategist.md +269 -0
- package/agents/qe/semantic-reviewer.md +78 -0
- package/commands/agentic/audit.md +24 -0
- package/commands/agentic/design.md +24 -0
- package/commands/agentic/frameworks.md +25 -0
- package/commands/agentic/review.md +27 -0
- package/commands/archetype/build.md +12 -0
- package/commands/archetype/decide.md +12 -0
- package/commands/archetype/explore.md +12 -0
- package/commands/archetype/incident.md +12 -0
- package/commands/archetype/migrate.md +12 -0
- package/commands/archetype/modernize.md +12 -0
- package/commands/archetype/review.md +14 -0
- package/commands/archetype/ship.md +12 -0
- package/commands/archetype/specify.md +12 -0
- package/commands/archetype/triage.md +12 -0
- package/commands/compile.md +37 -0
- package/commands/data/analyze.md +18 -0
- package/commands/data/data.md +21 -0
- package/commands/data/ml.md +18 -0
- package/commands/data/ontology.md +22 -0
- package/commands/data/pipeline.md +17 -0
- package/commands/deliberate.md +181 -0
- package/commands/engineering/add-field.md +77 -0
- package/commands/engineering/apply.md +58 -0
- package/commands/engineering/arch.md +26 -0
- package/commands/engineering/debug.md +27 -0
- package/commands/engineering/docs.md +27 -0
- package/commands/engineering/new-generator.md +257 -0
- package/commands/engineering/patch-plan.md +59 -0
- package/commands/engineering/plan.md +29 -0
- package/commands/engineering/remove.md +48 -0
- package/commands/engineering/rename.md +44 -0
- package/commands/engineering/review.md +32 -0
- package/commands/help.md +128 -0
- package/commands/install.md +118 -0
- package/commands/intent.md +54 -0
- package/commands/jam/brainstorm.md +37 -0
- package/commands/jam/council.md +49 -0
- package/commands/jam/quick.md +21 -0
- package/commands/jam/revisit.md +79 -0
- package/commands/persona/as.md +136 -0
- package/commands/persona/define.md +24 -0
- package/commands/persona/list.md +118 -0
- package/commands/platform/actions.md +20 -0
- package/commands/platform/assert.md +18 -0
- package/commands/platform/audit.md +23 -0
- package/commands/platform/compliance.md +20 -0
- package/commands/platform/gh.md +22 -0
- package/commands/platform/health.md +22 -0
- package/commands/platform/incident.md +23 -0
- package/commands/platform/infra.md +24 -0
- package/commands/platform/peer-health.md +103 -0
- package/commands/platform/plugin-health.md +58 -0
- package/commands/platform/security.md +38 -0
- package/commands/platform/toolchain.md +96 -0
- package/commands/platform/traces.md +20 -0
- package/commands/product/a11y.md +19 -0
- package/commands/product/acceptance.md +19 -0
- package/commands/product/align.md +20 -0
- package/commands/product/analyze.md +23 -0
- package/commands/product/elicit.md +19 -0
- package/commands/product/listen.md +24 -0
- package/commands/product/mockup.md +20 -0
- package/commands/product/screenshot.md +19 -0
- package/commands/product/strategy.md +40 -0
- package/commands/product/synthesize.md +23 -0
- package/commands/product/ux-review.md +42 -0
- package/commands/product/ux.md +20 -0
- package/commands/product/visual-direction.md +34 -0
- package/commands/prove.md +47 -0
- package/commands/report-issue.md +243 -0
- package/commands/reset.md +144 -0
- package/commands/search/blast-radius.md +58 -0
- package/commands/search/hotspots.md +55 -0
- package/commands/search/index.md +38 -0
- package/commands/search/lineage.md +47 -0
- package/commands/search/service-map.md +79 -0
- package/commands/setup.md +363 -0
- package/commands/smaht/briefing.md +200 -0
- package/commands/smaht/events-import.md +95 -0
- package/commands/smaht/state.md +19 -0
- package/commands/where-am-i.md +58 -0
- package/docs/README.md +32 -0
- package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
- package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
- package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
- package/docs/brain-chunk-format.md +135 -0
- package/docs/compiler.md +95 -0
- package/docs/daemon-api.md +70 -0
- package/docs/domains.md +197 -0
- package/docs/getting-started.md +208 -0
- package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
- package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
- package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
- package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
- package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
- package/docs/required-peers.md +60 -0
- package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
- package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
- package/docs/v11/archetypes.md +231 -0
- package/hooks/hooks.json +275 -0
- package/hooks/scripts/bootstrap.py +1797 -0
- package/hooks/scripts/invoke.py +62 -0
- package/hooks/scripts/notification.py +166 -0
- package/hooks/scripts/permission_request.py +223 -0
- package/hooks/scripts/post_tool.py +1374 -0
- package/hooks/scripts/pre_compact.py +272 -0
- package/hooks/scripts/pre_tool.py +1278 -0
- package/hooks/scripts/prompt_submit.py +1109 -0
- package/hooks/scripts/session_end.py +95 -0
- package/hooks/scripts/stop.py +624 -0
- package/hooks/scripts/subagent_lifecycle.py +464 -0
- package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
- package/hooks/scripts/task_completed.py +322 -0
- package/hooks/scripts/worktree_guard.py +148 -0
- package/hooks/subscriptions/on_gate_decided.json +9 -0
- package/install.mjs +128 -0
- package/package.json +41 -0
- package/pyproject.toml +59 -0
- package/schemas/README.md +32 -0
- package/schemas/assert_contracts.json +37 -0
- package/schemas/health_probe.json +46 -0
- package/schemas/plugin_status.json +37 -0
- package/scripts/_adapters/__init__.py +166 -0
- package/scripts/_adapters/jira_adapter.py +18 -0
- package/scripts/_adapters/linear_adapter.py +18 -0
- package/scripts/_adapters/miro_adapter.py +18 -0
- package/scripts/_adapters/notion_adapter.py +18 -0
- package/scripts/_agents.py +357 -0
- package/scripts/_brain_ingest/__init__.py +2 -0
- package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
- package/scripts/_brain_port.py +163 -0
- package/scripts/_bus.py +1081 -0
- package/scripts/_bus_catalog_gen.py +93 -0
- package/scripts/_bus_consumers.json +46 -0
- package/scripts/_bus_emit.py +43 -0
- package/scripts/_capability_registry.py +334 -0
- package/scripts/_capability_resolver.py +322 -0
- package/scripts/_domain_store.py +559 -0
- package/scripts/_event_log_reader.py +154 -0
- package/scripts/_event_schema.py +305 -0
- package/scripts/_event_store.py +397 -0
- package/scripts/_heavy_cadence.py +324 -0
- package/scripts/_integration_resolver.py +321 -0
- package/scripts/_logger.py +151 -0
- package/scripts/_loom.py +482 -0
- package/scripts/_paths.py +133 -0
- package/scripts/_python.sh +22 -0
- package/scripts/_run.py +137 -0
- package/scripts/_session.py +502 -0
- package/scripts/_validate_registry.py +1042 -0
- package/scripts/_wicked_testing_probe.py +277 -0
- package/scripts/agentic/analyze_agents.py +391 -0
- package/scripts/agentic/detect_framework.py +420 -0
- package/scripts/agentic/issue_taxonomy.py +357 -0
- package/scripts/agentic/pattern_scorer.py +434 -0
- package/scripts/classify/persist.py +169 -0
- package/scripts/compiler/compile.py +552 -0
- package/scripts/compiler/phase0/VERDICT.md +60 -0
- package/scripts/compiler/phase0/detect.py +292 -0
- package/scripts/compiler/phase0/emit.py +228 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
- package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
- package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/verdict.json +104 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
- package/scripts/compiler/phase0/run_probe.py +234 -0
- package/scripts/compiler/phase0/wire_vault.py +310 -0
- package/scripts/crew/__init__.py +0 -0
- package/scripts/crew/_task_audit_writer.py +243 -0
- package/scripts/crew/_task_reader.py +389 -0
- package/scripts/crew/archetypes_v11.py +348 -0
- package/scripts/crew/detectors/__init__.py +12 -0
- package/scripts/crew/flow_compiler.py +121 -0
- package/scripts/crew/phase_manager.py +703 -0
- package/scripts/crew/scope_delta.py +264 -0
- package/scripts/crew/specialist_resolver.py +218 -0
- package/scripts/crew/stack_registry.py +189 -0
- package/scripts/data/data_profiler.py +271 -0
- package/scripts/data/ontology_recommender.py +231 -0
- package/scripts/data/schema_validator.py +267 -0
- package/scripts/delivery/drift.py +739 -0
- package/scripts/delivery/telemetry.py +614 -0
- package/scripts/engineering/patch/codegraph_db.py +125 -0
- package/scripts/engineering/patch/generators/__init__.py +56 -0
- package/scripts/engineering/patch/generators/base.py +373 -0
- package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
- package/scripts/engineering/patch/generators/go_generator.py +430 -0
- package/scripts/engineering/patch/generators/java_generator.py +928 -0
- package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
- package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
- package/scripts/engineering/patch/generators/perl_generator.py +510 -0
- package/scripts/engineering/patch/generators/php_generator.py +644 -0
- package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
- package/scripts/engineering/patch/generators/python_generator.py +487 -0
- package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
- package/scripts/engineering/patch/generators/rust_generator.py +400 -0
- package/scripts/engineering/patch/generators/sql_generator.py +594 -0
- package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
- package/scripts/engineering/patch/patch.py +800 -0
- package/scripts/engineering/patch/safety.py +429 -0
- package/scripts/jam/__init__.py +0 -0
- package/scripts/jam/_bus_consumers.py +271 -0
- package/scripts/jam/agentic_cli_registry.py +703 -0
- package/scripts/jam/consensus.py +737 -0
- package/scripts/jam/detect_clis.py +409 -0
- package/scripts/jam/jam.py +283 -0
- package/scripts/jam/save_transcript.py +171 -0
- package/scripts/loom/__init__.py +22 -0
- package/scripts/loom/cli.py +170 -0
- package/scripts/loom/compose.py +180 -0
- package/scripts/loom/gate.py +120 -0
- package/scripts/loom/manifest.py +140 -0
- package/scripts/loom/resolve.py +59 -0
- package/scripts/persona/__init__.py +0 -0
- package/scripts/persona/registry.py +688 -0
- package/scripts/platform/guard_pipeline.py +1214 -0
- package/scripts/platform/guard_profiles.py +216 -0
- package/scripts/platform/observability/assert_contracts.py +434 -0
- package/scripts/platform/observability/health_probe.py +915 -0
- package/scripts/platform/observability/ops_log_viewer.py +209 -0
- package/scripts/platform/prereq_doctor.py +567 -0
- package/scripts/qe/conditions_manifest.py +260 -0
- package/scripts/qe/content_sanitizer.py +160 -0
- package/scripts/qe/coverage_tracker.py +535 -0
- package/scripts/qe/discover_scenarios.py +243 -0
- package/scripts/qe/evidence_tracker.py +232 -0
- package/scripts/qe/prove.py +196 -0
- package/scripts/qe/registry_lookup.py +80 -0
- package/scripts/qe/registry_store.py +176 -0
- package/scripts/qe/semantic_review.py +1005 -0
- package/scripts/qe/vault_gate.py +382 -0
- package/scripts/qe/verdict_audit.py +175 -0
- package/scripts/qe/verdict_schema.py +335 -0
- package/scripts/reset.py +220 -0
- package/scripts/resolve_path.py +22 -0
- package/scripts/sentinel/invariants.py +402 -0
- package/scripts/sentinel/pre_push.py +73 -0
- package/scripts/setup/__init__.py +1 -0
- package/scripts/setup/detect_state.py +114 -0
- package/scripts/setup/migrate_legacy.py +67 -0
- package/scripts/setup/migrate_v6_projects.py +232 -0
- package/scripts/setup/onboarding.py +114 -0
- package/scripts/smaht/_bus_consumers.py +98 -0
- package/scripts/smaht/adapters/__init__.py +83 -0
- package/scripts/smaht/adapters/brain_adapter.py +254 -0
- package/scripts/smaht/adapters/context7_adapter.py +438 -0
- package/scripts/smaht/adapters/delegation_adapter.py +104 -0
- package/scripts/smaht/adapters/domain_adapter.py +206 -0
- package/scripts/smaht/adapters/events_adapter.py +231 -0
- package/scripts/smaht/adapters/tools_adapter.py +49 -0
- package/scripts/smaht/cheatsheet_store.py +236 -0
- package/scripts/smaht/context_package.py +386 -0
- package/scripts/smaht/knowledge_graph.py +395 -0
- package/scripts/smaht/propose_skills.py +856 -0
- package/scripts/smaht/test_cheatsheet_store.py +428 -0
- package/scripts/statusline.py +151 -0
- package/scripts/where_am_i.py +236 -0
- package/skills/agentic/agentic-patterns/SKILL.md +91 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
- package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
- package/skills/agentic/context-engineering/SKILL.md +142 -0
- package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
- package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
- package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
- package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
- package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
- package/skills/agentic/frameworks/SKILL.md +191 -0
- package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
- package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
- package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
- package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
- package/skills/agentic/refs/audit.md +134 -0
- package/skills/agentic/refs/design.md +137 -0
- package/skills/agentic/refs/frameworks.md +102 -0
- package/skills/agentic/refs/review.md +160 -0
- package/skills/agentic/review-methodology/SKILL.md +186 -0
- package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
- package/skills/agentic/trust-and-safety/SKILL.md +177 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
- package/skills/archetype/SKILL.md +104 -0
- package/skills/archetype/refs/build.md +142 -0
- package/skills/archetype/refs/decide.md +117 -0
- package/skills/archetype/refs/explore.md +66 -0
- package/skills/archetype/refs/incident.md +149 -0
- package/skills/archetype/refs/migrate.md +170 -0
- package/skills/archetype/refs/modernize.md +187 -0
- package/skills/archetype/refs/review.md +145 -0
- package/skills/archetype/refs/ship.md +117 -0
- package/skills/archetype/refs/specify.md +108 -0
- package/skills/archetype/refs/triage.md +62 -0
- package/skills/classify/SKILL.md +157 -0
- package/skills/data/analysis/SKILL.md +125 -0
- package/skills/data/analysis/refs/templates.md +170 -0
- package/skills/data/data/SKILL.md +118 -0
- package/skills/data/data/refs/examples.md +235 -0
- package/skills/data/ml/SKILL.md +125 -0
- package/skills/data/ml/refs/templates.md +172 -0
- package/skills/data/pipeline/SKILL.md +136 -0
- package/skills/data/pipeline/refs/templates.md +175 -0
- package/skills/data/refs/analyze.md +123 -0
- package/skills/data/refs/data.md +95 -0
- package/skills/data/refs/ml.md +118 -0
- package/skills/data/refs/pipeline.md +92 -0
- package/skills/deliberate/SKILL.md +125 -0
- package/skills/deliberate/refs/architecture-lens.md +37 -0
- package/skills/deliberate/refs/assumptions-lens.md +43 -0
- package/skills/deliberate/refs/code-lens.md +38 -0
- package/skills/deliberate/refs/content-lens.md +37 -0
- package/skills/deliberate/refs/data-lens.md +43 -0
- package/skills/deliberate/refs/design-lens.md +37 -0
- package/skills/deliberate/refs/opportunity-patterns.md +107 -0
- package/skills/deliberate/refs/ops-lens.md +43 -0
- package/skills/deliberate/refs/product-lens.md +46 -0
- package/skills/deliberate/refs/rethink-framework.md +77 -0
- package/skills/deliberate/refs/security-lens.md +47 -0
- package/skills/deliberate/refs/testing-lens.md +45 -0
- package/skills/deliberate/refs/timing-lens.md +42 -0
- package/skills/engineering/architecture/SKILL.md +177 -0
- package/skills/engineering/architecture/refs/adr-template.md +268 -0
- package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
- package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
- package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
- package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
- package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
- package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
- package/skills/engineering/backend/SKILL.md +102 -0
- package/skills/engineering/backend/refs/checklists.md +146 -0
- package/skills/engineering/backend/refs/patterns.md +181 -0
- package/skills/engineering/debugging/SKILL.md +99 -0
- package/skills/engineering/debugging/refs/patterns.md +248 -0
- package/skills/engineering/debugging/refs/process.md +203 -0
- package/skills/engineering/docs/SKILL.md +97 -0
- package/skills/engineering/engineering/SKILL.md +88 -0
- package/skills/engineering/engineering/refs/checklists.md +91 -0
- package/skills/engineering/engineering/refs/templates.md +71 -0
- package/skills/engineering/frontend/SKILL.md +92 -0
- package/skills/engineering/frontend/refs/checklists.md +96 -0
- package/skills/engineering/frontend/refs/patterns.md +167 -0
- package/skills/engineering/integration/SKILL.md +183 -0
- package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
- package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
- package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
- package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
- package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
- package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
- package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
- package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
- package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
- package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
- package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
- package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
- package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
- package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
- package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
- package/skills/engineering/integration/refs/grpc-testing.md +49 -0
- package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
- package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
- package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
- package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
- package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
- package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
- package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
- package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
- package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
- package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
- package/skills/engineering/large-scale-migration/SKILL.md +65 -0
- package/skills/engineering/patch/SKILL.md +184 -0
- package/skills/engineering/refs/arch.md +126 -0
- package/skills/engineering/refs/debug.md +142 -0
- package/skills/engineering/refs/docs.md +190 -0
- package/skills/engineering/refs/plan.md +109 -0
- package/skills/engineering/refs/review.md +138 -0
- package/skills/engineering/system-design/SKILL.md +154 -0
- package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
- package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
- package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
- package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
- package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
- package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
- package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
- package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
- package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
- package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
- package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
- package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
- package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
- package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
- package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
- package/skills/engineering/unit-test-quality/SKILL.md +194 -0
- package/skills/ground/SKILL.md +130 -0
- package/skills/integration-discovery/SKILL.md +168 -0
- package/skills/integration-discovery/refs/capabilities.md +282 -0
- package/skills/integration-discovery/refs/cli-detection.md +295 -0
- package/skills/integration-discovery/refs/discovery-sources.md +233 -0
- package/skills/integration-discovery/refs/task-patterns.md +206 -0
- package/skills/jam/SKILL.md +45 -0
- package/skills/jam/refs/facilitation-patterns.md +125 -0
- package/skills/jam/refs/quick.md +64 -0
- package/skills/jam/refs/synthesis-patterns.md +114 -0
- package/skills/multi-model/SKILL.md +168 -0
- package/skills/multi-model/refs/aichat.md +119 -0
- package/skills/multi-model/refs/aider.md +100 -0
- package/skills/multi-model/refs/auditability.md +238 -0
- package/skills/multi-model/refs/codex.md +169 -0
- package/skills/multi-model/refs/context.md +306 -0
- package/skills/multi-model/refs/copilot.md +161 -0
- package/skills/multi-model/refs/examples.md +224 -0
- package/skills/multi-model/refs/gemini.md +185 -0
- package/skills/multi-model/refs/goose.md +112 -0
- package/skills/multi-model/refs/llm.md +124 -0
- package/skills/multi-model/refs/opencode.md +196 -0
- package/skills/multi-model/refs/orchestration.md +188 -0
- package/skills/multi-model/refs/pi.md +208 -0
- package/skills/persona/SKILL.md +144 -0
- package/skills/persona/refs/define.md +133 -0
- package/skills/platform/actions/refs/actions.md +114 -0
- package/skills/platform/audit/SKILL.md +174 -0
- package/skills/platform/audit/refs/audit.md +145 -0
- package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
- package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
- package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
- package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
- package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
- package/skills/platform/compliance/SKILL.md +169 -0
- package/skills/platform/compliance/refs/checklists.md +303 -0
- package/skills/platform/compliance/refs/compliance.md +117 -0
- package/skills/platform/compliance/refs/frameworks.md +282 -0
- package/skills/platform/errors/SKILL.md +183 -0
- package/skills/platform/errors/refs/patterns.md +271 -0
- package/skills/platform/errors/refs/severity.md +264 -0
- package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
- package/skills/platform/gh/refs/gh.md +105 -0
- package/skills/platform/gh-cli/SKILL.md +120 -0
- package/skills/platform/gh-cli/refs/automation.md +63 -0
- package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
- package/skills/platform/gh-cli/refs/patterns.md +132 -0
- package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
- package/skills/platform/github-actions/SKILL.md +159 -0
- package/skills/platform/github-actions/refs/security.md +150 -0
- package/skills/platform/github-actions/refs/templates.md +230 -0
- package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
- package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
- package/skills/platform/gitlab-ci/SKILL.md +140 -0
- package/skills/platform/gitlab-ci/refs/templates.md +223 -0
- package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
- package/skills/platform/glab-cli/SKILL.md +133 -0
- package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
- package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
- package/skills/platform/glab-cli/refs/patterns.md +131 -0
- package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
- package/skills/platform/health/SKILL.md +177 -0
- package/skills/platform/health/refs/health.md +72 -0
- package/skills/platform/health/refs/sources.md +302 -0
- package/skills/platform/incident/refs/incident.md +136 -0
- package/skills/platform/infra/refs/infra.md +104 -0
- package/skills/platform/observability/SKILL.md +128 -0
- package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
- package/skills/platform/prereq-doctor/SKILL.md +57 -0
- package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
- package/skills/platform/traces/refs/traces.md +101 -0
- package/skills/product/acceptance-criteria/SKILL.md +193 -0
- package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
- package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
- package/skills/product/accessibility/SKILL.md +197 -0
- package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
- package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
- package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
- package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
- package/skills/product/accessibility/refs/audit-report-results.md +276 -0
- package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
- package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
- package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
- package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
- package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
- package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
- package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
- package/skills/product/analyze/SKILL.md +164 -0
- package/skills/product/analyze/refs/algorithms.md +238 -0
- package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
- package/skills/product/imagery/SKILL.md +97 -0
- package/skills/product/imagery/alter/SKILL.md +105 -0
- package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
- package/skills/product/imagery/create/SKILL.md +109 -0
- package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
- package/skills/product/imagery/create/refs/provider-reference.md +219 -0
- package/skills/product/imagery/review/SKILL.md +101 -0
- package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
- package/skills/product/imagery/review/refs/quality-gates.md +153 -0
- package/skills/product/imagery/scripts/analyze.sh +23 -0
- package/skills/product/imagery/scripts/edit.sh +14 -0
- package/skills/product/imagery/scripts/generate.sh +13 -0
- package/skills/product/imagery/scripts/provider.py +787 -0
- package/skills/product/listen/SKILL.md +175 -0
- package/skills/product/listen/refs/channels.md +220 -0
- package/skills/product/mockup/SKILL.md +106 -0
- package/skills/product/mockup/refs/templates.md +95 -0
- package/skills/product/refs/a11y.md +109 -0
- package/skills/product/refs/acceptance.md +79 -0
- package/skills/product/refs/align.md +67 -0
- package/skills/product/refs/analyze.md +77 -0
- package/skills/product/refs/elicit.md +67 -0
- package/skills/product/refs/listen.md +58 -0
- package/skills/product/refs/mockup.md +77 -0
- package/skills/product/refs/screenshot.md +59 -0
- package/skills/product/refs/strategy.md +77 -0
- package/skills/product/refs/synthesize.md +54 -0
- package/skills/product/refs/ux-review.md +68 -0
- package/skills/product/refs/ux.md +101 -0
- package/skills/product/requirements-analysis/SKILL.md +136 -0
- package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
- package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
- package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
- package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
- package/skills/product/requirements-graph/SKILL.md +155 -0
- package/skills/product/requirements-graph/refs/examples.md +223 -0
- package/skills/product/requirements-graph/refs/schema.md +162 -0
- package/skills/product/requirements-migrate/SKILL.md +90 -0
- package/skills/product/requirements-navigate/SKILL.md +141 -0
- package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
- package/skills/product/screenshot/SKILL.md +147 -0
- package/skills/product/strategy/SKILL.md +198 -0
- package/skills/product/strategy/refs/frameworks.md +295 -0
- package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
- package/skills/product/strategy/refs/templates-roi-value.md +207 -0
- package/skills/product/synthesize/SKILL.md +116 -0
- package/skills/product/synthesize/refs/journey-mapping.md +212 -0
- package/skills/product/synthesize/refs/prioritization.md +193 -0
- package/skills/product/ux-review/SKILL.md +164 -0
- package/skills/product/visual-direction/SKILL.md +137 -0
- package/skills/product/visual-review/SKILL.md +131 -0
- package/skills/runtime-exec/SKILL.md +138 -0
- package/skills/search/codebase-narrator/SKILL.md +131 -0
- package/skills/search/codebase-narrator/refs/output-template.md +100 -0
- package/skills/smaht/SKILL.md +72 -0
- package/skills/smaht/discovery/SKILL.md +65 -0
- package/skills/smaht/intent/SKILL.md +89 -0
- package/skills/smaht/propose-skills/SKILL.md +142 -0
- package/skills/smaht/refs/state.md +76 -0
- package/skills/swarm/SKILL.md +132 -0
- package/skills/swarm/refs/fan-out.md +104 -0
- package/skills/swarm/refs/independent-verification.md +86 -0
- package/skills/swarm/refs/receipts-and-evidence.md +69 -0
- package/skills/swarm/refs/recon-synthesis.md +87 -0
- package/skills/swarm/refs/ship-discipline.md +90 -0
- package/skills/wickedizer/SKILL.md +147 -0
- package/skills/wickedizer/refs/artifact-types.md +238 -0
- package/skills/wickedizer/refs/complexity.md +278 -0
- package/skills/wickedizer/refs/de-ai-pass.md +140 -0
- package/skills/wickedizer/refs/failure-modes.md +249 -0
- package/skills/wickedizer/refs/patterns.md +282 -0
- package/skills/wickedizer/refs/review.md +221 -0
- package/skills/wickedizer/refs/structure.md +282 -0
- package/skills/wickedizer/refs/voice-profile.md +125 -0
- package/skills/workflow/SKILL.md +132 -0
- package/skills/workflow/refs/archetype-adjustments.md +205 -0
- package/skills/workflow/refs/evidence.md +58 -0
- package/skills/workflow/refs/integration.md +130 -0
- package/skills/workflow/refs/risk-dimension-signals.md +260 -0
- package/skills/workflow/refs/scoring-rubric.md +49 -0
- package/skills/workflow/refs/signal-keywords.md +176 -0
- package/skills/workflow/refs/specialist-routing-rules.md +159 -0
- package/skills/worktrees/SKILL.md +87 -0
- package/skills/worktrees/refs/recipes.md +96 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "build"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Backend Review Checklists
|
|
6
|
+
|
|
7
|
+
## API Quality Checklist
|
|
8
|
+
- [ ] RESTful conventions followed
|
|
9
|
+
- [ ] Appropriate HTTP methods and status codes
|
|
10
|
+
- [ ] Request/response validation
|
|
11
|
+
- [ ] Consistent error responses
|
|
12
|
+
- [ ] Pagination for collections
|
|
13
|
+
- [ ] Versioning strategy
|
|
14
|
+
|
|
15
|
+
## Database Quality Checklist
|
|
16
|
+
- [ ] Schema normalized appropriately
|
|
17
|
+
- [ ] Indexes on query fields
|
|
18
|
+
- [ ] Foreign keys and constraints
|
|
19
|
+
- [ ] Migrations reversible
|
|
20
|
+
- [ ] No N+1 queries
|
|
21
|
+
- [ ] Transactions used correctly
|
|
22
|
+
|
|
23
|
+
## Security Checklist
|
|
24
|
+
- [ ] No plaintext passwords
|
|
25
|
+
- [ ] Input validation
|
|
26
|
+
- [ ] SQL injection prevention
|
|
27
|
+
- [ ] Authorization checks
|
|
28
|
+
- [ ] Rate limiting
|
|
29
|
+
- [ ] Sensitive data not logged
|
|
30
|
+
|
|
31
|
+
## Common Anti-Patterns
|
|
32
|
+
|
|
33
|
+
### API Anti-Patterns
|
|
34
|
+
- Inconsistent endpoint naming
|
|
35
|
+
- Wrong HTTP methods or status codes
|
|
36
|
+
- No pagination
|
|
37
|
+
- Missing rate limiting
|
|
38
|
+
- No versioning
|
|
39
|
+
- Not following REST conventions
|
|
40
|
+
|
|
41
|
+
### Database Anti-Patterns
|
|
42
|
+
- Missing indexes on foreign keys
|
|
43
|
+
- N+1 query problems
|
|
44
|
+
- Not using transactions
|
|
45
|
+
- Missing connection pooling
|
|
46
|
+
- Non-reversible migrations
|
|
47
|
+
- Over-normalization or under-normalization
|
|
48
|
+
|
|
49
|
+
### Security Anti-Patterns
|
|
50
|
+
- Plaintext passwords
|
|
51
|
+
- SQL injection vulnerabilities
|
|
52
|
+
- Missing authorization checks
|
|
53
|
+
- Logging sensitive data (passwords, tokens, SSNs)
|
|
54
|
+
- No input validation
|
|
55
|
+
- Missing CSRF protection
|
|
56
|
+
|
|
57
|
+
### Performance Anti-Patterns
|
|
58
|
+
- Synchronous external API calls in request path
|
|
59
|
+
- No caching for expensive operations
|
|
60
|
+
- Not using background jobs
|
|
61
|
+
- Missing query optimization
|
|
62
|
+
- No connection pooling
|
|
63
|
+
- Blocking operations in async code
|
|
64
|
+
|
|
65
|
+
## Output Template
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## Backend Review: {Feature/API}
|
|
69
|
+
|
|
70
|
+
### API Design
|
|
71
|
+
{Endpoint structure, conventions}
|
|
72
|
+
|
|
73
|
+
### Data Model
|
|
74
|
+
{Schema design, relationships}
|
|
75
|
+
|
|
76
|
+
### Database Performance
|
|
77
|
+
{Query optimization, indexes}
|
|
78
|
+
|
|
79
|
+
### Security
|
|
80
|
+
{Auth patterns, validation}
|
|
81
|
+
|
|
82
|
+
### Issues
|
|
83
|
+
| Severity | Issue | Location | Fix |
|
|
84
|
+
|----------|-------|----------|-----|
|
|
85
|
+
| {Level} | {Problem} | {File:line} | {Solution} |
|
|
86
|
+
|
|
87
|
+
### Recommendations
|
|
88
|
+
1. {Priority item}
|
|
89
|
+
2. {Secondary item}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Key Focus Areas
|
|
93
|
+
|
|
94
|
+
### API Design
|
|
95
|
+
- RESTful conventions (resources, methods, status codes)
|
|
96
|
+
- GraphQL schema design
|
|
97
|
+
- API versioning strategies
|
|
98
|
+
- Request/response validation
|
|
99
|
+
- Error handling and messaging
|
|
100
|
+
- Pagination and filtering
|
|
101
|
+
- Rate limiting
|
|
102
|
+
|
|
103
|
+
### Database Patterns
|
|
104
|
+
- Schema design and normalization
|
|
105
|
+
- Indexing strategies
|
|
106
|
+
- Query optimization
|
|
107
|
+
- Transaction management
|
|
108
|
+
- Connection pooling
|
|
109
|
+
- Migration best practices
|
|
110
|
+
- N+1 query prevention
|
|
111
|
+
|
|
112
|
+
### Data Modeling
|
|
113
|
+
- Entity definition
|
|
114
|
+
- Relationship modeling (1:1, 1:N, N:M)
|
|
115
|
+
- Data types and constraints
|
|
116
|
+
- Validation rules
|
|
117
|
+
- Audit trails
|
|
118
|
+
|
|
119
|
+
### Authentication & Authorization
|
|
120
|
+
- Password hashing (bcrypt, argon2)
|
|
121
|
+
- JWT or session management
|
|
122
|
+
- OAuth2 / OIDC patterns
|
|
123
|
+
- RBAC (Role-Based Access Control)
|
|
124
|
+
- API key management
|
|
125
|
+
|
|
126
|
+
### Performance & Scalability
|
|
127
|
+
- Query optimization and EXPLAIN plans
|
|
128
|
+
- Caching strategies (Redis, memcached)
|
|
129
|
+
- Background jobs (Celery, Bull)
|
|
130
|
+
- Database read replicas
|
|
131
|
+
- Horizontal scaling
|
|
132
|
+
|
|
133
|
+
### Integration Patterns
|
|
134
|
+
- External API resilience (retry, timeout, circuit breaker)
|
|
135
|
+
- Webhook handling with retry
|
|
136
|
+
- Message queue patterns
|
|
137
|
+
- Idempotency for critical operations
|
|
138
|
+
|
|
139
|
+
## Tools
|
|
140
|
+
|
|
141
|
+
- OpenAPI/Swagger for API docs
|
|
142
|
+
- EXPLAIN for query plans
|
|
143
|
+
- Database migrations (Alembic, Flyway)
|
|
144
|
+
- APM tools (DataDog, New Relic)
|
|
145
|
+
- Error tracking (Sentry)
|
|
146
|
+
- Load testing (Locust, k6)
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "build"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Backend Code Patterns
|
|
6
|
+
|
|
7
|
+
## API Endpoint Pattern
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
@router.post("/api/v1/orders", status_code=201)
|
|
11
|
+
async def create_order(
|
|
12
|
+
order: OrderCreate,
|
|
13
|
+
current_user: User = Depends(get_current_user)
|
|
14
|
+
) -> OrderResponse:
|
|
15
|
+
# Authorization
|
|
16
|
+
if not current_user.can_create_orders:
|
|
17
|
+
raise HTTPException(403, "Insufficient permissions")
|
|
18
|
+
|
|
19
|
+
# Validation
|
|
20
|
+
if order.total < 0:
|
|
21
|
+
raise HTTPException(400, "Total must be non-negative")
|
|
22
|
+
|
|
23
|
+
# Transaction
|
|
24
|
+
async with db.transaction():
|
|
25
|
+
db_order = await db.orders.create(**order.dict())
|
|
26
|
+
await send_notification.delay(db_order.id)
|
|
27
|
+
|
|
28
|
+
return OrderResponse.from_orm(db_order)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Query Optimization Pattern
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
# Bad: N+1 problem
|
|
35
|
+
orders = await Order.all()
|
|
36
|
+
for order in orders:
|
|
37
|
+
order.items = await OrderItem.filter(order_id=order.id)
|
|
38
|
+
|
|
39
|
+
# Good: Eager loading
|
|
40
|
+
orders = await Order.prefetch_related('items').all()
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Database Patterns
|
|
44
|
+
|
|
45
|
+
### Transaction Management
|
|
46
|
+
```python
|
|
47
|
+
async with db.transaction():
|
|
48
|
+
user = await User.create(email=email)
|
|
49
|
+
await Profile.create(user_id=user.id)
|
|
50
|
+
await send_welcome_email.delay(user.id)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Connection Pooling
|
|
54
|
+
```python
|
|
55
|
+
# Configure connection pool
|
|
56
|
+
DATABASE_URL = "postgresql://user:pass@localhost/db"
|
|
57
|
+
database = Database(
|
|
58
|
+
DATABASE_URL,
|
|
59
|
+
min_size=5,
|
|
60
|
+
max_size=20
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Migration Best Practices
|
|
65
|
+
```python
|
|
66
|
+
# Reversible migration
|
|
67
|
+
def upgrade():
|
|
68
|
+
op.add_column('users', sa.Column('status', sa.String(20)))
|
|
69
|
+
|
|
70
|
+
def downgrade():
|
|
71
|
+
op.drop_column('users', 'status')
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Authentication Patterns
|
|
75
|
+
|
|
76
|
+
### Password Hashing
|
|
77
|
+
```python
|
|
78
|
+
from passlib.context import CryptContext
|
|
79
|
+
|
|
80
|
+
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
|
81
|
+
|
|
82
|
+
def hash_password(password: str) -> str:
|
|
83
|
+
return pwd_context.hash(password)
|
|
84
|
+
|
|
85
|
+
def verify_password(plain: str, hashed: str) -> bool:
|
|
86
|
+
return pwd_context.verify(plain, hashed)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### JWT Token Management
|
|
90
|
+
```python
|
|
91
|
+
from jose import jwt
|
|
92
|
+
from datetime import datetime, timedelta
|
|
93
|
+
|
|
94
|
+
def create_access_token(user_id: int) -> str:
|
|
95
|
+
expires = datetime.utcnow() + timedelta(hours=1)
|
|
96
|
+
payload = {"sub": str(user_id), "exp": expires}
|
|
97
|
+
return jwt.encode(payload, SECRET_KEY, algorithm="HS256")
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Integration Patterns
|
|
101
|
+
|
|
102
|
+
### External API Resilience
|
|
103
|
+
```python
|
|
104
|
+
import httpx
|
|
105
|
+
from tenacity import retry, stop_after_attempt, wait_exponential
|
|
106
|
+
|
|
107
|
+
@retry(
|
|
108
|
+
stop=stop_after_attempt(3),
|
|
109
|
+
wait=wait_exponential(multiplier=1, min=2, max=10)
|
|
110
|
+
)
|
|
111
|
+
async def fetch_external_data(url: str):
|
|
112
|
+
async with httpx.AsyncClient(timeout=5.0) as client:
|
|
113
|
+
response = await client.get(url)
|
|
114
|
+
response.raise_for_status()
|
|
115
|
+
return response.json()
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Webhook Handling
|
|
119
|
+
```python
|
|
120
|
+
@router.post("/webhooks/stripe")
|
|
121
|
+
async def handle_stripe_webhook(
|
|
122
|
+
request: Request,
|
|
123
|
+
signature: str = Header(None, alias="Stripe-Signature")
|
|
124
|
+
):
|
|
125
|
+
payload = await request.body()
|
|
126
|
+
|
|
127
|
+
# Verify signature
|
|
128
|
+
verify_webhook_signature(payload, signature)
|
|
129
|
+
|
|
130
|
+
# Process idempotently
|
|
131
|
+
event = json.loads(payload)
|
|
132
|
+
await process_event_idempotent(event)
|
|
133
|
+
|
|
134
|
+
return {"status": "received"}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Circuit Breaker Pattern
|
|
138
|
+
```python
|
|
139
|
+
from circuitbreaker import circuit
|
|
140
|
+
|
|
141
|
+
@circuit(failure_threshold=5, recovery_timeout=60)
|
|
142
|
+
async def call_payment_service(order_id: int):
|
|
143
|
+
# Will open circuit after 5 failures
|
|
144
|
+
# Closes automatically after 60 seconds
|
|
145
|
+
return await payment_api.charge(order_id)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Caching Patterns
|
|
149
|
+
|
|
150
|
+
### Redis Caching
|
|
151
|
+
```python
|
|
152
|
+
from redis import asyncio as aioredis
|
|
153
|
+
|
|
154
|
+
async def get_user(user_id: int) -> User:
|
|
155
|
+
cache_key = f"user:{user_id}"
|
|
156
|
+
|
|
157
|
+
# Try cache first
|
|
158
|
+
cached = await redis.get(cache_key)
|
|
159
|
+
if cached:
|
|
160
|
+
return User.parse_raw(cached)
|
|
161
|
+
|
|
162
|
+
# Fetch from database
|
|
163
|
+
user = await User.get(id=user_id)
|
|
164
|
+
|
|
165
|
+
# Cache for 5 minutes
|
|
166
|
+
await redis.setex(cache_key, 300, user.json())
|
|
167
|
+
|
|
168
|
+
return user
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Cache Invalidation
|
|
172
|
+
```python
|
|
173
|
+
async def update_user(user_id: int, data: UserUpdate):
|
|
174
|
+
user = await User.get(id=user_id)
|
|
175
|
+
await user.update(**data.dict())
|
|
176
|
+
|
|
177
|
+
# Invalidate cache
|
|
178
|
+
await redis.delete(f"user:{user_id}")
|
|
179
|
+
|
|
180
|
+
return user
|
|
181
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugging
|
|
3
|
+
description: |
|
|
4
|
+
Systematic debugging and root cause analysis for investigating errors,
|
|
5
|
+
diagnosing complex issues, and performance profiling.
|
|
6
|
+
|
|
7
|
+
Use when: "debug this error", "why is this failing", "root cause analysis",
|
|
8
|
+
"fix this bug", "investigate crash", "stack trace", "not working"
|
|
9
|
+
portability: portable
|
|
10
|
+
context: fork
|
|
11
|
+
# TODO #339: When Claude Code supports 'paths' in skill frontmatter for
|
|
12
|
+
# file-context auto-activation, add:
|
|
13
|
+
# paths: ["**/*.log", "**/error*.ts", "**/error*.py", "**/*debug*"]
|
|
14
|
+
phase_relevance: ["design", "build"]
|
|
15
|
+
archetype_relevance: ["*"]
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Debugging Skill
|
|
19
|
+
|
|
20
|
+
Systematic debugging, root cause analysis, and error investigation.
|
|
21
|
+
|
|
22
|
+
## Debugging Approach
|
|
23
|
+
|
|
24
|
+
### 1. Understand the Problem
|
|
25
|
+
- What is expected vs actual behavior?
|
|
26
|
+
- When did it start? Can it be reproduced?
|
|
27
|
+
- What changed recently?
|
|
28
|
+
|
|
29
|
+
### 2. Gather Evidence
|
|
30
|
+
- Read logs and stack traces
|
|
31
|
+
- Review recent changes
|
|
32
|
+
- Identify patterns
|
|
33
|
+
|
|
34
|
+
### 3. Form Hypothesis
|
|
35
|
+
- What is the most likely cause?
|
|
36
|
+
- What evidence supports this?
|
|
37
|
+
|
|
38
|
+
### 4. Test Hypothesis
|
|
39
|
+
- Design targeted test
|
|
40
|
+
- Observe results
|
|
41
|
+
- Refine if needed
|
|
42
|
+
|
|
43
|
+
### 5. Implement Fix
|
|
44
|
+
- Develop minimal fix
|
|
45
|
+
- Verify resolution
|
|
46
|
+
- Add regression tests
|
|
47
|
+
|
|
48
|
+
### 6. Document
|
|
49
|
+
- Root cause and fix
|
|
50
|
+
- Add monitoring/alerting
|
|
51
|
+
|
|
52
|
+
## Issue Categories
|
|
53
|
+
|
|
54
|
+
- **Logic Errors**: Incorrect conditions, off-by-one, wrong operators
|
|
55
|
+
- **State Errors**: Race conditions, stale closures, shared mutable state
|
|
56
|
+
- **Integration Errors**: API mismatch, auth issues, timeouts
|
|
57
|
+
- **Performance**: N+1 queries, missing indexes, memory leaks
|
|
58
|
+
- **Environment**: Config differences, missing vars, permissions
|
|
59
|
+
|
|
60
|
+
## Systematic Process
|
|
61
|
+
|
|
62
|
+
Follow the six-step debugging process with:
|
|
63
|
+
- Checklists for investigation and evidence gathering
|
|
64
|
+
- Severity levels (CRITICAL, HIGH, MEDIUM, LOW)
|
|
65
|
+
- Output templates for documentation
|
|
66
|
+
- Tools by environment (browser, Node.js, database)
|
|
67
|
+
|
|
68
|
+
See [refs/process.md](refs/process.md) for detailed process, checklists, and severity guidelines.
|
|
69
|
+
|
|
70
|
+
## Common Patterns
|
|
71
|
+
|
|
72
|
+
Debugging techniques and solutions for:
|
|
73
|
+
- Null/undefined issues with optional chaining
|
|
74
|
+
- Async timing and race conditions
|
|
75
|
+
- Scope and closure problems
|
|
76
|
+
- Binary search debugging with git bisect
|
|
77
|
+
- Performance profiling
|
|
78
|
+
- Database query analysis
|
|
79
|
+
|
|
80
|
+
See [refs/patterns.md](refs/patterns.md) for code examples and debugging techniques.
|
|
81
|
+
|
|
82
|
+
## External Integration Discovery
|
|
83
|
+
|
|
84
|
+
Debugging can leverage available integrations by capability:
|
|
85
|
+
|
|
86
|
+
| Capability | Discovery Patterns | Provides |
|
|
87
|
+
|------------|-------------------|----------|
|
|
88
|
+
| **Error tracking** | `sentry`, `rollbar`, `datadog` | Recent errors, stack traces, user context |
|
|
89
|
+
| **Observability** | `newrelic`, `dynatrace`, `telemetry` | APM data, traces, metrics |
|
|
90
|
+
| **Logging** | `splunk`, `elastic`, `cloudwatch` | Log aggregation, search |
|
|
91
|
+
|
|
92
|
+
Discover available integrations via capability detection. Fall back to local log analysis via wicked-garden:search when none available.
|
|
93
|
+
|
|
94
|
+
## Notes
|
|
95
|
+
|
|
96
|
+
- Start with the simplest explanation
|
|
97
|
+
- Use scientific method: hypothesis, test, refine
|
|
98
|
+
- Document your findings for future reference
|
|
99
|
+
- Add tests to prevent regression
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "build"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Debugging Code Patterns
|
|
6
|
+
|
|
7
|
+
## Binary Search Debugging
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
git bisect start
|
|
11
|
+
git bisect bad HEAD
|
|
12
|
+
git bisect good v1.2.0
|
|
13
|
+
# Git will checkout commits to test
|
|
14
|
+
# After each test:
|
|
15
|
+
git bisect good # or git bisect bad
|
|
16
|
+
# Continue until found
|
|
17
|
+
git bisect reset
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Log-Based Debugging
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
console.log('1. Input:', input);
|
|
24
|
+
console.log('2. Validated:', validated);
|
|
25
|
+
console.log('3. Result:', result);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Performance Profiling
|
|
29
|
+
|
|
30
|
+
```javascript
|
|
31
|
+
console.time('operation');
|
|
32
|
+
await expensiveOperation();
|
|
33
|
+
console.timeEnd('operation');
|
|
34
|
+
|
|
35
|
+
// Or with Performance API
|
|
36
|
+
const start = performance.now();
|
|
37
|
+
await expensiveOperation();
|
|
38
|
+
const duration = performance.now() - start;
|
|
39
|
+
console.log(`Operation took ${duration}ms`);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Common Error Patterns
|
|
43
|
+
|
|
44
|
+
### Null/Undefined Issues
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
// Problem: user.profile.name (profile is null)
|
|
48
|
+
// Fix: Optional chaining
|
|
49
|
+
const name = user?.profile?.name ?? 'Unknown';
|
|
50
|
+
|
|
51
|
+
// Problem: Cannot read property of undefined
|
|
52
|
+
// Fix: Guard clauses
|
|
53
|
+
if (!user || !user.profile) {
|
|
54
|
+
return 'Unknown';
|
|
55
|
+
}
|
|
56
|
+
return user.profile.name;
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Async Timing Issues
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
// Problem: Race condition
|
|
63
|
+
let result;
|
|
64
|
+
fetchData().then(data => result = data);
|
|
65
|
+
console.log(result); // undefined - promise not resolved yet
|
|
66
|
+
|
|
67
|
+
// Fix: Use await
|
|
68
|
+
const result = await fetchData();
|
|
69
|
+
console.log(result); // correct value
|
|
70
|
+
|
|
71
|
+
// Problem: Parallel promises with errors
|
|
72
|
+
await Promise.all([promise1, promise2]); // Fails fast
|
|
73
|
+
|
|
74
|
+
// Fix: Handle all settled
|
|
75
|
+
const results = await Promise.allSettled([promise1, promise2]);
|
|
76
|
+
results.forEach((result, i) => {
|
|
77
|
+
if (result.status === 'rejected') {
|
|
78
|
+
console.error(`Promise ${i} failed:`, result.reason);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Scope/Closure Issues
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
// Problem: var in loop
|
|
87
|
+
for (var i = 0; i < 3; i++) {
|
|
88
|
+
setTimeout(() => console.log(i), 100); // Logs: 3,3,3
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Fix: Use let (block scope)
|
|
92
|
+
for (let i = 0; i < 3; i++) {
|
|
93
|
+
setTimeout(() => console.log(i), 100); // Logs: 0,1,2
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Problem: Stale closure
|
|
97
|
+
function createCounter() {
|
|
98
|
+
let count = 0;
|
|
99
|
+
return {
|
|
100
|
+
increment: () => count++,
|
|
101
|
+
getCount: () => count
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Fix: Use current state, not captured
|
|
106
|
+
function useCounter() {
|
|
107
|
+
const [count, setCount] = useState(0);
|
|
108
|
+
const increment = useCallback(() => {
|
|
109
|
+
setCount(c => c + 1); // Use function updater
|
|
110
|
+
}, []);
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Race Conditions
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
// Problem: Lost updates
|
|
118
|
+
let count = 0;
|
|
119
|
+
async function increment() {
|
|
120
|
+
const current = count;
|
|
121
|
+
await delay(10);
|
|
122
|
+
count = current + 1; // Multiple calls overwrite each other
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Fix: Atomic operations
|
|
126
|
+
async function increment() {
|
|
127
|
+
count++; // Or use locks/transactions for complex cases
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Problem: Multiple async setState
|
|
131
|
+
const [data, setData] = useState([]);
|
|
132
|
+
setData(data.concat(newItem)); // Bad: uses stale data
|
|
133
|
+
|
|
134
|
+
// Fix: Functional update
|
|
135
|
+
setData(prev => prev.concat(newItem));
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Debugging Techniques
|
|
139
|
+
|
|
140
|
+
### Stack Trace Analysis
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Error: Cannot read property 'id' of undefined
|
|
144
|
+
at processUser (app.js:42:15) <- Where it failed
|
|
145
|
+
at handleRequest (app.js:28:10) <- What called it
|
|
146
|
+
at Server.<anonymous> (app.js:10:5) <- Origin
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Work backwards:
|
|
150
|
+
1. Line 42: `user.id` - user is undefined
|
|
151
|
+
2. Line 28: Called processUser without validating user
|
|
152
|
+
3. Line 10: Request handler didn't check if user exists
|
|
153
|
+
|
|
154
|
+
### Breakpoint Debugging
|
|
155
|
+
|
|
156
|
+
```javascript
|
|
157
|
+
// Add debugger statement
|
|
158
|
+
function complexFunction(data) {
|
|
159
|
+
debugger; // Execution pauses here in DevTools
|
|
160
|
+
const processed = processData(data);
|
|
161
|
+
return processed;
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Conditional Logging
|
|
166
|
+
|
|
167
|
+
```javascript
|
|
168
|
+
const DEBUG = process.env.NODE_ENV === 'development';
|
|
169
|
+
|
|
170
|
+
function log(...args) {
|
|
171
|
+
if (DEBUG) {
|
|
172
|
+
console.log('[DEBUG]', ...args);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
log('User state:', user); // Only in development
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Network Debugging
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
// Add request/response logging
|
|
183
|
+
fetch(url)
|
|
184
|
+
.then(response => {
|
|
185
|
+
console.log('Response status:', response.status);
|
|
186
|
+
console.log('Response headers:', response.headers);
|
|
187
|
+
return response.json();
|
|
188
|
+
})
|
|
189
|
+
.then(data => {
|
|
190
|
+
console.log('Response data:', data);
|
|
191
|
+
return data;
|
|
192
|
+
})
|
|
193
|
+
.catch(error => {
|
|
194
|
+
console.error('Fetch failed:', error);
|
|
195
|
+
console.error('URL:', url);
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Database Debugging
|
|
200
|
+
|
|
201
|
+
### Query Analysis
|
|
202
|
+
|
|
203
|
+
```sql
|
|
204
|
+
-- Check query execution plan
|
|
205
|
+
EXPLAIN ANALYZE
|
|
206
|
+
SELECT * FROM orders
|
|
207
|
+
WHERE user_id = 123
|
|
208
|
+
AND created_at > '2024-01-01';
|
|
209
|
+
|
|
210
|
+
-- Look for:
|
|
211
|
+
-- - Sequential scans (add index)
|
|
212
|
+
-- - High cost estimates
|
|
213
|
+
-- - Missing indexes
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### N+1 Query Detection
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
// Problem: N+1 queries
|
|
220
|
+
const users = await User.findAll();
|
|
221
|
+
for (const user of users) {
|
|
222
|
+
const orders = await Order.findAll({ where: { userId: user.id } });
|
|
223
|
+
user.orders = orders;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Fix: Eager loading
|
|
227
|
+
const users = await User.findAll({
|
|
228
|
+
include: [{ model: Order }]
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Memory Leak Debugging
|
|
233
|
+
|
|
234
|
+
```javascript
|
|
235
|
+
// Problem: Event listener not removed
|
|
236
|
+
component.addEventListener('click', handler);
|
|
237
|
+
// Component destroyed but listener remains
|
|
238
|
+
|
|
239
|
+
// Fix: Cleanup
|
|
240
|
+
useEffect(() => {
|
|
241
|
+
const handler = () => { /* ... */ };
|
|
242
|
+
component.addEventListener('click', handler);
|
|
243
|
+
|
|
244
|
+
return () => {
|
|
245
|
+
component.removeEventListener('click', handler);
|
|
246
|
+
};
|
|
247
|
+
}, []);
|
|
248
|
+
```
|