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,313 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
GitLab Operations CLI - Power utilities for GitLab CLI (glab).
|
|
4
|
+
|
|
5
|
+
Provides intelligent wrappers for common GitLab operations:
|
|
6
|
+
- Pipeline failure analysis with fix suggestions
|
|
7
|
+
- MR bulk operations and review queue
|
|
8
|
+
- Release automation with changelog generation
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import argparse
|
|
12
|
+
import json
|
|
13
|
+
import subprocess
|
|
14
|
+
import sys
|
|
15
|
+
import re
|
|
16
|
+
from datetime import datetime
|
|
17
|
+
from typing import Dict, List, Any, Optional, Tuple
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class GLABError(Exception):
|
|
21
|
+
"""Custom exception for GitLab CLI errors."""
|
|
22
|
+
pass
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def run_glab(args: List[str], check: bool = True) -> Tuple[int, str, str]:
|
|
26
|
+
"""Run a glab command and return (returncode, stdout, stderr)."""
|
|
27
|
+
try:
|
|
28
|
+
result = subprocess.run(
|
|
29
|
+
["glab"] + args,
|
|
30
|
+
capture_output=True,
|
|
31
|
+
text=True,
|
|
32
|
+
check=False
|
|
33
|
+
)
|
|
34
|
+
if check and result.returncode != 0:
|
|
35
|
+
raise GLABError(result.stderr.strip() or f"Command failed: glab {' '.join(args)}")
|
|
36
|
+
return result.returncode, result.stdout, result.stderr
|
|
37
|
+
except FileNotFoundError:
|
|
38
|
+
raise GLABError("GitLab CLI (glab) not found. Install from https://gitlab.com/gitlab-org/cli")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def run_glab_json(args: List[str]) -> Any:
|
|
42
|
+
"""Run glab command expecting JSON output."""
|
|
43
|
+
_, stdout, _ = run_glab(args + ["--output", "json"])
|
|
44
|
+
if not stdout.strip():
|
|
45
|
+
return None
|
|
46
|
+
return json.loads(stdout)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Error patterns for GitLab CI
|
|
50
|
+
KNOWN_ERROR_PATTERNS = {
|
|
51
|
+
r"npm ERR! (code E\d+|ERESOLVE|ENOENT)": {
|
|
52
|
+
"category": "npm",
|
|
53
|
+
"fix": "Try: rm -rf node_modules package-lock.json && npm install"
|
|
54
|
+
},
|
|
55
|
+
r"ModuleNotFoundError: No module named '(\w+)'": {
|
|
56
|
+
"category": "python",
|
|
57
|
+
"fix": "Missing dependency. Add to requirements.txt"
|
|
58
|
+
},
|
|
59
|
+
r"error\[E\d+\]: (.+)": {
|
|
60
|
+
"category": "rust",
|
|
61
|
+
"fix": "Rust compilation error"
|
|
62
|
+
},
|
|
63
|
+
r"Job failed: exit code (\d+)": {
|
|
64
|
+
"category": "exit_code",
|
|
65
|
+
"fix": None
|
|
66
|
+
},
|
|
67
|
+
r"OOMKilled|out of memory": {
|
|
68
|
+
"category": "resources",
|
|
69
|
+
"fix": "Increase runner memory"
|
|
70
|
+
},
|
|
71
|
+
r"Could not resolve host|network unreachable": {
|
|
72
|
+
"category": "network",
|
|
73
|
+
"fix": "Check network connectivity and DNS"
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def diagnose(project: Optional[str] = None, suggest_fixes: bool = False) -> Dict[str, Any]:
|
|
79
|
+
"""Analyze the most recent failed pipeline."""
|
|
80
|
+
|
|
81
|
+
# Get pipelines
|
|
82
|
+
cmd = ["ci", "list", "--status", "failed"]
|
|
83
|
+
if project:
|
|
84
|
+
cmd.extend(["--repo", project])
|
|
85
|
+
|
|
86
|
+
code, stdout, stderr = run_glab(cmd, check=False)
|
|
87
|
+
if code != 0:
|
|
88
|
+
return {"status": "error", "message": stderr}
|
|
89
|
+
|
|
90
|
+
# Parse output (glab ci list doesn't support JSON directly)
|
|
91
|
+
lines = stdout.strip().split('\n')
|
|
92
|
+
if not lines or lines[0].startswith("No"):
|
|
93
|
+
return {"status": "ok", "message": "No failed pipelines found"}
|
|
94
|
+
|
|
95
|
+
# Get the first failed pipeline ID from the output
|
|
96
|
+
# Format: "ID STATUS REF ..."
|
|
97
|
+
pipeline_id = None
|
|
98
|
+
for line in lines[1:]: # Skip header
|
|
99
|
+
parts = line.split()
|
|
100
|
+
if parts:
|
|
101
|
+
pipeline_id = parts[0]
|
|
102
|
+
break
|
|
103
|
+
|
|
104
|
+
if not pipeline_id:
|
|
105
|
+
return {"status": "ok", "message": "No failed pipelines found"}
|
|
106
|
+
|
|
107
|
+
# Get pipeline jobs
|
|
108
|
+
cmd = ["ci", "view", pipeline_id]
|
|
109
|
+
if project:
|
|
110
|
+
cmd.extend(["--repo", project])
|
|
111
|
+
_, pipeline_output, _ = run_glab(cmd, check=False)
|
|
112
|
+
|
|
113
|
+
# Get failed job logs
|
|
114
|
+
cmd = ["ci", "trace", pipeline_id]
|
|
115
|
+
if project:
|
|
116
|
+
cmd.extend(["--repo", project])
|
|
117
|
+
_, logs, _ = run_glab(cmd, check=False)
|
|
118
|
+
|
|
119
|
+
# Extract errors
|
|
120
|
+
errors = extract_errors(logs, suggest_fixes)
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
"pipeline_id": pipeline_id,
|
|
124
|
+
"errors": errors,
|
|
125
|
+
"raw_output": pipeline_output[:1000] if pipeline_output else None
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def extract_errors(logs: str, suggest_fixes: bool) -> List[Dict[str, Any]]:
|
|
130
|
+
"""Extract and categorize errors from logs."""
|
|
131
|
+
errors = []
|
|
132
|
+
seen = set()
|
|
133
|
+
|
|
134
|
+
for line in logs.split('\n'):
|
|
135
|
+
line = line.strip()
|
|
136
|
+
if not line:
|
|
137
|
+
continue
|
|
138
|
+
|
|
139
|
+
for pattern, info in KNOWN_ERROR_PATTERNS.items():
|
|
140
|
+
match = re.search(pattern, line, re.IGNORECASE)
|
|
141
|
+
if match:
|
|
142
|
+
error_key = f"{info['category']}:{match.group(0)[:50]}"
|
|
143
|
+
if error_key not in seen:
|
|
144
|
+
seen.add(error_key)
|
|
145
|
+
error = {
|
|
146
|
+
"message": line[:200],
|
|
147
|
+
"category": info["category"]
|
|
148
|
+
}
|
|
149
|
+
if suggest_fixes and info.get("fix"):
|
|
150
|
+
error["suggested_fix"] = info["fix"]
|
|
151
|
+
errors.append(error)
|
|
152
|
+
break
|
|
153
|
+
|
|
154
|
+
return errors[:20]
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def mr_review_queue() -> List[Dict[str, Any]]:
|
|
158
|
+
"""List MRs needing review."""
|
|
159
|
+
try:
|
|
160
|
+
result = run_glab_json([
|
|
161
|
+
"mr", "list",
|
|
162
|
+
"--reviewer=@me",
|
|
163
|
+
"--state=opened"
|
|
164
|
+
])
|
|
165
|
+
return result or []
|
|
166
|
+
except Exception:
|
|
167
|
+
# Fallback to non-JSON
|
|
168
|
+
_, stdout, _ = run_glab(["mr", "list", "--reviewer=@me", "--state=opened"], check=False)
|
|
169
|
+
return [{"raw": stdout}]
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def mr_merge_ready(dry_run: bool = True) -> List[Dict[str, Any]]:
|
|
173
|
+
"""List MRs that are approved and passing CI."""
|
|
174
|
+
try:
|
|
175
|
+
result = run_glab_json(["mr", "list", "--state=opened"])
|
|
176
|
+
ready = []
|
|
177
|
+
for mr in (result or []):
|
|
178
|
+
# Check if approved and CI passing
|
|
179
|
+
if mr.get("approved") and mr.get("merge_status") == "can_be_merged":
|
|
180
|
+
ready.append(mr)
|
|
181
|
+
return ready
|
|
182
|
+
except Exception:
|
|
183
|
+
_, stdout, _ = run_glab(["mr", "list", "--state=opened"], check=False)
|
|
184
|
+
return [{"raw": stdout}]
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def mr_status(mr_id: int, project: Optional[str] = None) -> Dict[str, Any]:
|
|
188
|
+
"""Get comprehensive MR status."""
|
|
189
|
+
cmd = ["mr", "view", str(mr_id)]
|
|
190
|
+
if project:
|
|
191
|
+
cmd.extend(["--repo", project])
|
|
192
|
+
|
|
193
|
+
try:
|
|
194
|
+
return run_glab_json(cmd)
|
|
195
|
+
except Exception:
|
|
196
|
+
_, stdout, _ = run_glab(cmd, check=False)
|
|
197
|
+
return {"raw": stdout}
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def release(bump: str = "patch", dry_run: bool = True, notes: Optional[str] = None,
|
|
201
|
+
project: Optional[str] = None) -> Dict[str, Any]:
|
|
202
|
+
"""Create a release with changelog."""
|
|
203
|
+
|
|
204
|
+
# Get latest release
|
|
205
|
+
cmd = ["release", "list"]
|
|
206
|
+
if project:
|
|
207
|
+
cmd.extend(["--repo", project])
|
|
208
|
+
_, releases_output, _ = run_glab(cmd, check=False)
|
|
209
|
+
|
|
210
|
+
# Parse version from first line
|
|
211
|
+
last_tag = None
|
|
212
|
+
for line in releases_output.strip().split('\n'):
|
|
213
|
+
if line and not line.startswith("NAME"):
|
|
214
|
+
parts = line.split()
|
|
215
|
+
if parts:
|
|
216
|
+
last_tag = parts[0]
|
|
217
|
+
break
|
|
218
|
+
|
|
219
|
+
# Calculate new version
|
|
220
|
+
new_version = calculate_version(last_tag, bump)
|
|
221
|
+
|
|
222
|
+
changelog = notes or f"Release {new_version}"
|
|
223
|
+
|
|
224
|
+
result = {
|
|
225
|
+
"previous_version": last_tag,
|
|
226
|
+
"new_version": new_version,
|
|
227
|
+
"changelog": changelog,
|
|
228
|
+
"dry_run": dry_run
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if not dry_run:
|
|
232
|
+
cmd = ["release", "create", new_version, "--notes", changelog]
|
|
233
|
+
if project:
|
|
234
|
+
cmd.extend(["--repo", project])
|
|
235
|
+
run_glab(cmd)
|
|
236
|
+
result["released"] = True
|
|
237
|
+
|
|
238
|
+
return result
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
def calculate_version(current: Optional[str], bump: str) -> str:
|
|
242
|
+
"""Calculate next version."""
|
|
243
|
+
if not current:
|
|
244
|
+
return "v0.1.0"
|
|
245
|
+
|
|
246
|
+
match = re.match(r'v?(\d+)\.(\d+)\.(\d+)', current)
|
|
247
|
+
if not match:
|
|
248
|
+
return "v0.1.0"
|
|
249
|
+
|
|
250
|
+
major, minor, patch = int(match.group(1)), int(match.group(2)), int(match.group(3))
|
|
251
|
+
|
|
252
|
+
if bump == "major":
|
|
253
|
+
return f"v{major + 1}.0.0"
|
|
254
|
+
elif bump == "minor":
|
|
255
|
+
return f"v{major}.{minor + 1}.0"
|
|
256
|
+
else:
|
|
257
|
+
return f"v{major}.{minor}.{patch + 1}"
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
def main():
|
|
261
|
+
parser = argparse.ArgumentParser(description="GitLab Operations CLI")
|
|
262
|
+
subparsers = parser.add_subparsers(dest="command", required=True)
|
|
263
|
+
|
|
264
|
+
# diagnose
|
|
265
|
+
p = subparsers.add_parser("diagnose", help="Analyze failed pipelines")
|
|
266
|
+
p.add_argument("--project", help="Project path (group/project)")
|
|
267
|
+
p.add_argument("--suggest-fixes", action="store_true")
|
|
268
|
+
|
|
269
|
+
# mr-review-queue
|
|
270
|
+
subparsers.add_parser("mr-review-queue", help="List MRs needing review")
|
|
271
|
+
|
|
272
|
+
# mr-merge-ready
|
|
273
|
+
p = subparsers.add_parser("mr-merge-ready", help="List MRs ready to merge")
|
|
274
|
+
p.add_argument("--dry-run", action="store_true", default=True)
|
|
275
|
+
|
|
276
|
+
# mr-status
|
|
277
|
+
p = subparsers.add_parser("mr-status", help="Get MR status")
|
|
278
|
+
p.add_argument("id", type=int, help="MR ID")
|
|
279
|
+
p.add_argument("--project", help="Project path")
|
|
280
|
+
|
|
281
|
+
# release
|
|
282
|
+
p = subparsers.add_parser("release", help="Create a release")
|
|
283
|
+
p.add_argument("--bump", choices=["major", "minor", "patch"], default="patch")
|
|
284
|
+
p.add_argument("--dry-run", action="store_true")
|
|
285
|
+
p.add_argument("--notes", help="Release notes")
|
|
286
|
+
p.add_argument("--project", help="Project path")
|
|
287
|
+
|
|
288
|
+
args = parser.parse_args()
|
|
289
|
+
|
|
290
|
+
try:
|
|
291
|
+
if args.command == "diagnose":
|
|
292
|
+
result = diagnose(args.project, args.suggest_fixes)
|
|
293
|
+
elif args.command == "mr-review-queue":
|
|
294
|
+
result = mr_review_queue()
|
|
295
|
+
elif args.command == "mr-merge-ready":
|
|
296
|
+
result = mr_merge_ready(args.dry_run)
|
|
297
|
+
elif args.command == "mr-status":
|
|
298
|
+
result = mr_status(args.id, args.project)
|
|
299
|
+
elif args.command == "release":
|
|
300
|
+
result = release(args.bump, args.dry_run, args.notes, args.project)
|
|
301
|
+
else:
|
|
302
|
+
parser.print_help()
|
|
303
|
+
sys.exit(1)
|
|
304
|
+
|
|
305
|
+
print(json.dumps(result, indent=2))
|
|
306
|
+
|
|
307
|
+
except GLABError as e:
|
|
308
|
+
print(f"Error: {e}", file=sys.stderr)
|
|
309
|
+
sys.exit(1)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
if __name__ == "__main__":
|
|
313
|
+
main()
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: health
|
|
3
|
+
description: |
|
|
4
|
+
System health overview from discovered observability sources. Aggregates errors,
|
|
5
|
+
performance metrics, and SLO status across services. Correlates with deployments
|
|
6
|
+
and code changes. Use for proactive health monitoring and post-deployment validation.
|
|
7
|
+
|
|
8
|
+
Use when: checking aggregated system health, validating a post-deployment
|
|
9
|
+
state, or correlating production status with recent changes.
|
|
10
|
+
portability: portable
|
|
11
|
+
phase_relevance: ["build", "review", "operate"]
|
|
12
|
+
archetype_relevance: ["*"]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Health Aggregation Skill
|
|
16
|
+
|
|
17
|
+
Aggregate system health from discovered observability sources with deployment correlation.
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
- Overall system health check
|
|
22
|
+
- Pre/post deployment validation
|
|
23
|
+
- SLO/SLA compliance monitoring
|
|
24
|
+
- Capacity assessment
|
|
25
|
+
- Proactive issue detection
|
|
26
|
+
- User asks "health", "status", "how is production"
|
|
27
|
+
|
|
28
|
+
## Health Assessment Approach
|
|
29
|
+
|
|
30
|
+
### 1. Discover Observability Sources
|
|
31
|
+
|
|
32
|
+
Use capability-based discovery to find available integrations:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Discover available integrations via capability detection
|
|
36
|
+
|
|
37
|
+
# Scan for capabilities by analyzing server descriptions and resources:
|
|
38
|
+
# - error-tracking capability: Exception/error tracking and reporting
|
|
39
|
+
# - apm capability: Application performance monitoring and metrics
|
|
40
|
+
# - logging capability: Log aggregation, search, and analysis
|
|
41
|
+
# - tracing capability: Distributed tracing and service mapping
|
|
42
|
+
# - telemetry capability: Metrics collection and custom instrumentation
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. Aggregate Health Metrics
|
|
46
|
+
|
|
47
|
+
For each discovered source, collect:
|
|
48
|
+
- **Error rates**: Current vs baseline
|
|
49
|
+
- **Performance**: Latency (p50, p95, p99)
|
|
50
|
+
- **Throughput**: Requests per second
|
|
51
|
+
- **SLO status**: Availability, latency, error budgets
|
|
52
|
+
- **Alerts**: Active alerts and severity
|
|
53
|
+
|
|
54
|
+
### 3. Calculate Health Score
|
|
55
|
+
|
|
56
|
+
**HEALTHY**: All metrics within SLO, no active alerts, stable trends
|
|
57
|
+
**DEGRADED**: Some metrics elevated, minor alerts, or negative trends
|
|
58
|
+
**CRITICAL**: SLO violations, critical alerts, or severe degradation
|
|
59
|
+
|
|
60
|
+
### 4. Correlate with Changes
|
|
61
|
+
|
|
62
|
+
Check for recent changes that might impact health:
|
|
63
|
+
- Deployments (via CI/CD integrations or git history)
|
|
64
|
+
- Code changes (via wicked-garden:search)
|
|
65
|
+
- Infrastructure changes
|
|
66
|
+
- Traffic patterns
|
|
67
|
+
|
|
68
|
+
### 5. Provide Actionable Recommendations
|
|
69
|
+
|
|
70
|
+
Based on health status:
|
|
71
|
+
- Immediate actions for critical issues
|
|
72
|
+
- Investigation paths for degradations
|
|
73
|
+
- Optimization opportunities
|
|
74
|
+
- Capacity planning insights
|
|
75
|
+
|
|
76
|
+
## Integration Discovery
|
|
77
|
+
|
|
78
|
+
This skill discovers integrations at runtime based on capability:
|
|
79
|
+
|
|
80
|
+
| Capability | What to Look For | Provides |
|
|
81
|
+
|------------|------------------|----------|
|
|
82
|
+
| **error-tracking** | Exception tracking, error reporting, crash analytics | Error rates, stack traces, user impact |
|
|
83
|
+
| **apm** | Performance monitoring, service metrics, observability | Latency, throughput, service health |
|
|
84
|
+
| **logging** | Log aggregation, log search, log analysis | Log aggregation, search, patterns |
|
|
85
|
+
| **tracing** | Distributed tracing, request tracing, trace analysis | Distributed traces, dependencies |
|
|
86
|
+
| **telemetry** | Metrics collection, custom instrumentation, time-series data | Custom metrics, instrumentation |
|
|
87
|
+
|
|
88
|
+
**Fallback**: If no integrations found, perform local analysis via wicked-garden:search for error patterns in code.
|
|
89
|
+
|
|
90
|
+
See refs/sources.md for detailed capability discovery patterns.
|
|
91
|
+
|
|
92
|
+
## Output Format
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
## System Health Report
|
|
96
|
+
|
|
97
|
+
**Overall Status**: [HEALTHY | DEGRADED | CRITICAL]
|
|
98
|
+
**Assessment Time**: {timestamp}
|
|
99
|
+
**Data Sources**: {list of integrations used}
|
|
100
|
+
|
|
101
|
+
### Health Summary
|
|
102
|
+
|
|
103
|
+
| Service | Status | Error Rate | Latency (p95) | SLO Status |
|
|
104
|
+
|---------|--------|------------|---------------|------------|
|
|
105
|
+
| {service} | {status} | {rate} | {latency} | {✓ or ✗} |
|
|
106
|
+
|
|
107
|
+
### Issues Detected
|
|
108
|
+
|
|
109
|
+
[For each issue]
|
|
110
|
+
**{Service}: {Issue Description}**
|
|
111
|
+
- Severity: [CRITICAL | HIGH | MEDIUM | LOW]
|
|
112
|
+
- Started: {timestamp}
|
|
113
|
+
- Metric: {specific metric and values}
|
|
114
|
+
- Pattern: {error pattern or behavior}
|
|
115
|
+
- Correlation: {deployment or change if found}
|
|
116
|
+
- Blast Radius: {impact scope}
|
|
117
|
+
|
|
118
|
+
### Trends (24h)
|
|
119
|
+
|
|
120
|
+
- Error Rates: {trend with percentage}
|
|
121
|
+
- Latency: {trend with percentage}
|
|
122
|
+
- Traffic: {trend with percentage}
|
|
123
|
+
|
|
124
|
+
### Recommendations
|
|
125
|
+
|
|
126
|
+
**Immediate**:
|
|
127
|
+
{critical actions needed now}
|
|
128
|
+
|
|
129
|
+
**Short-term**:
|
|
130
|
+
{optimizations and improvements}
|
|
131
|
+
|
|
132
|
+
**Capacity**:
|
|
133
|
+
{capacity planning insights}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Common Health Patterns
|
|
137
|
+
|
|
138
|
+
### Post-Deployment Degradation
|
|
139
|
+
Error rates or latency increase after deployment. Correlate metrics with deployment time and consider rollback.
|
|
140
|
+
|
|
141
|
+
### Gradual Performance Decline
|
|
142
|
+
Metrics slowly degrading over hours/days. Investigate memory leaks, growing data, cache efficiency.
|
|
143
|
+
|
|
144
|
+
### Traffic-Related Issues
|
|
145
|
+
Performance degrades with traffic spikes. Check capacity utilization and scaling policies.
|
|
146
|
+
|
|
147
|
+
### Cascading Failures
|
|
148
|
+
Single service failure causes downstream issues. Use traces to identify root cause and implement circuit breakers.
|
|
149
|
+
|
|
150
|
+
## Integration with wicked-crew
|
|
151
|
+
|
|
152
|
+
When crew enters build phase:
|
|
153
|
+
1. Capture baseline health metrics
|
|
154
|
+
2. Monitor during deployment
|
|
155
|
+
3. Validate post-deployment health
|
|
156
|
+
4. Alert if degradation detected
|
|
157
|
+
|
|
158
|
+
Emit events:
|
|
159
|
+
- `observe:health:checked:success`
|
|
160
|
+
- `observe:health:degraded:warning`
|
|
161
|
+
- `observe:health:critical:failure`
|
|
162
|
+
|
|
163
|
+
## Integration with engineering
|
|
164
|
+
|
|
165
|
+
When debugging issues, provide observability context:
|
|
166
|
+
- Recent errors from discovered sources
|
|
167
|
+
- Performance metrics around the issue
|
|
168
|
+
- Correlation with code changes
|
|
169
|
+
- Trace data for request flow
|
|
170
|
+
|
|
171
|
+
## Notes
|
|
172
|
+
|
|
173
|
+
- Prioritize data from real observability tools over static analysis
|
|
174
|
+
- Always correlate health changes with deployments or code changes
|
|
175
|
+
- Consider traffic patterns when assessing metrics
|
|
176
|
+
- Document baseline metrics for comparison
|
|
177
|
+
- Alert on SLO burn rate, not just absolute values
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# System Health Assessment Rubric
|
|
2
|
+
|
|
3
|
+
Assess system health by aggregating observability data from all available sources.
|
|
4
|
+
|
|
5
|
+
## Step 1: Discover Observability Sources
|
|
6
|
+
|
|
7
|
+
Use `ListMcpResourcesTool` to find available integrations. Look for:
|
|
8
|
+
- **error-tracking**: Sentry, Rollbar, Datadog errors
|
|
9
|
+
- **apm**: New Relic, Dynatrace, application metrics
|
|
10
|
+
- **logging**: Splunk, Elastic, CloudWatch logs
|
|
11
|
+
- **tracing**: Jaeger, Zipkin, distributed traces
|
|
12
|
+
|
|
13
|
+
## Step 2: Assessment Checklist (per source found)
|
|
14
|
+
|
|
15
|
+
- [ ] Error rates and trends — current vs baseline, any spikes
|
|
16
|
+
- [ ] Latency metrics — p50, p95, p99 distributions
|
|
17
|
+
- [ ] SLO compliance status — meeting service level objectives?
|
|
18
|
+
- [ ] Recent deployment correlation — changes in last N hours
|
|
19
|
+
- [ ] Capacity utilization — resource usage and headroom
|
|
20
|
+
|
|
21
|
+
## Step 3: Fallback (No Observability Sources)
|
|
22
|
+
|
|
23
|
+
If no integrations are available:
|
|
24
|
+
1. Use wicked-garden:search to find error patterns in code
|
|
25
|
+
2. Check recent git commits for deployment correlation (`git log --oneline --since="2 hours ago"`)
|
|
26
|
+
3. Analyze logging statements for potential issues
|
|
27
|
+
|
|
28
|
+
## Output Format
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
## System Health Report
|
|
32
|
+
|
|
33
|
+
**Overall Status**: [HEALTHY | DEGRADED | CRITICAL]
|
|
34
|
+
**Assessment Time**: {timestamp}
|
|
35
|
+
**Data Sources**: {list of sources used, or "code analysis (no integrations found)"}
|
|
36
|
+
|
|
37
|
+
### Metrics Summary
|
|
38
|
+
| Service | Status | Error Rate | p95 Latency | SLO |
|
|
39
|
+
|---------|--------|------------|-------------|-----|
|
|
40
|
+
| {name} | {status} | {rate} | {latency} | ✓/✗ |
|
|
41
|
+
|
|
42
|
+
### Issues Detected
|
|
43
|
+
{list with severity: CRITICAL | HIGH | MEDIUM | LOW}
|
|
44
|
+
|
|
45
|
+
### Deployment Correlation
|
|
46
|
+
{recent deployments and their impact}
|
|
47
|
+
|
|
48
|
+
### Recommendations
|
|
49
|
+
**Immediate**: {urgent actions}
|
|
50
|
+
**Short-term**: {improvements}
|
|
51
|
+
**Capacity**: {planning horizon}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Severity Classification
|
|
55
|
+
|
|
56
|
+
- **CRITICAL**: SLO violation, error rate >10x baseline, service down
|
|
57
|
+
- **DEGRADED**: Elevated errors (2-10x), latency doubled, trend worsening
|
|
58
|
+
- **HEALTHY**: Metrics within SLO, no alerts, stable or improving
|
|
59
|
+
|
|
60
|
+
## Common Patterns
|
|
61
|
+
|
|
62
|
+
### Error Spike After Deployment
|
|
63
|
+
Check if spike aligns with a deploy timestamp. Recommend rollback if:
|
|
64
|
+
- Error rate >5x baseline
|
|
65
|
+
- Critical paths affected
|
|
66
|
+
- No quick config fix available
|
|
67
|
+
|
|
68
|
+
### Gradual Performance Degradation
|
|
69
|
+
Check for memory leaks, growing data volume, cache hit rate drop, DB query growth.
|
|
70
|
+
|
|
71
|
+
### Cascading Failures
|
|
72
|
+
Identify the root failing service via traces. Fix root service first; dependents recover automatically.
|