pi-dev-team 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/PORTING.md +134 -0
- package/README.md +207 -0
- package/UPSTREAM.json +64 -0
- package/agents/Explore.md +15 -0
- package/agents/a11y-review.md +118 -0
- package/agents/adr-author.md +70 -0
- package/agents/ai-provenance-review.md +120 -0
- package/agents/angular-reactivity-review.md +95 -0
- package/agents/arch-review.md +135 -0
- package/agents/architect.md +78 -0
- package/agents/autoship-batch-proposer.md +69 -0
- package/agents/claude-setup-review.md +136 -0
- package/agents/codebase-recon.md +184 -0
- package/agents/component-architecture-review.md +119 -0
- package/agents/concurrency-review.md +109 -0
- package/agents/correctness-review.md +290 -0
- package/agents/data-flow-tracer.md +120 -0
- package/agents/doc-review.md +165 -0
- package/agents/domain-review.md +136 -0
- package/agents/general-purpose.md +10 -0
- package/agents/gherkin-quality-critic.md +113 -0
- package/agents/js-fp-review.md +114 -0
- package/agents/mutation-kill.md +684 -0
- package/agents/naming-review.md +142 -0
- package/agents/orchestrator.md +339 -0
- package/agents/performance-review.md +105 -0
- package/agents/plan-review-acceptance.md +115 -0
- package/agents/plan-review-design.md +90 -0
- package/agents/plan-review-parallelization.md +84 -0
- package/agents/plan-review-strategic.md +96 -0
- package/agents/plan-review-ux.md +110 -0
- package/agents/platform-engineer.md +64 -0
- package/agents/product-manager.md +68 -0
- package/agents/progress-guardian.md +79 -0
- package/agents/qa-engineer.md +289 -0
- package/agents/quality-reviewer.md +132 -0
- package/agents/react-reactivity-review.md +102 -0
- package/agents/refactor-opportunity-review.md +128 -0
- package/agents/security-engineer.md +60 -0
- package/agents/security-review.md +218 -0
- package/agents/session-analysis.md +95 -0
- package/agents/software-engineer.md +105 -0
- package/agents/spec-compliance-review.md +100 -0
- package/agents/spec-reviewer.md +114 -0
- package/agents/structure-review.md +146 -0
- package/agents/tech-writer.md +84 -0
- package/agents/test-review.md +246 -0
- package/agents/test-smell-review.md +188 -0
- package/agents/token-efficiency-review.md +139 -0
- package/agents/ui-ux-designer.md +54 -0
- package/agents/vue-reactivity-review.md +95 -0
- package/bin/__pycache__/claudecpython-314.pyc +0 -0
- package/bin/claude +258 -0
- package/docs/upstream/.pages +1 -0
- package/docs/upstream/CHANGELOG.md +2586 -0
- package/docs/upstream/README.md +155 -0
- package/docs/upstream/agent-architecture.md +214 -0
- package/docs/upstream/agent_info.md +187 -0
- package/docs/upstream/artifact-migration.md +124 -0
- package/docs/upstream/code-intelligence-nudge.md +149 -0
- package/docs/upstream/code-review-process.md +294 -0
- package/docs/upstream/concurrent-use.md +73 -0
- package/docs/upstream/context-management.md +111 -0
- package/docs/upstream/developer-notes.md +280 -0
- package/docs/upstream/diagrams/architecture-overview.svg +101 -0
- package/docs/upstream/diagrams/review-dispatch.svg +139 -0
- package/docs/upstream/diagrams/team-agents.svg +128 -0
- package/docs/upstream/diagrams/test-improve-flow.svg +166 -0
- package/docs/upstream/diagrams/workflow-linear.svg +66 -0
- package/docs/upstream/diagrams/workflow-three-phase.svg +200 -0
- package/docs/upstream/eval-maintenance.md +95 -0
- package/docs/upstream/eval-running-guide.md +147 -0
- package/docs/upstream/eval-system.md +291 -0
- package/docs/upstream/session-review-oss-complements.md +75 -0
- package/docs/upstream/session-review.md +212 -0
- package/docs/upstream/skills.md +188 -0
- package/docs/upstream/team-structure.md +21 -0
- package/docs/upstream/telemetry-ci-access.md +129 -0
- package/docs/upstream/telemetry-repo-security.md +120 -0
- package/docs/upstream/test-evaluation.md +277 -0
- package/docs/upstream/test-improve.md +154 -0
- package/docs/upstream/triage-workflow.md +282 -0
- package/docs/upstream/workflows.md +289 -0
- package/extensions/dev-team/index.ts +539 -0
- package/extensions/dev-team/lib/agents.ts +272 -0
- package/extensions/dev-team/lib/ai-credits.ts +92 -0
- package/extensions/dev-team/lib/autocompact.ts +81 -0
- package/extensions/dev-team/lib/child-run.ts +102 -0
- package/extensions/dev-team/lib/config.ts +236 -0
- package/extensions/dev-team/lib/gh-command.ts +103 -0
- package/extensions/dev-team/lib/github-style.ts +307 -0
- package/extensions/dev-team/lib/hooks.ts +350 -0
- package/extensions/dev-team/lib/metrics.ts +115 -0
- package/extensions/dev-team/lib/safe-read.ts +49 -0
- package/extensions/dev-team/lib/session-files.ts +57 -0
- package/extensions/dev-team/lib/session-spend.ts +123 -0
- package/extensions/dev-team/lib/shell-scan.ts +205 -0
- package/extensions/dev-team/lib/skills.ts +213 -0
- package/extensions/dev-team/lib/subagent-render.ts +245 -0
- package/extensions/dev-team/lib/subagent-types.ts +164 -0
- package/extensions/dev-team/lib/subagent.ts +596 -0
- package/extensions/dev-team/lib/terminal-text.ts +54 -0
- package/extensions/dev-team/lib/tools-misc.ts +152 -0
- package/extensions/dev-team/lib/transcript.ts +110 -0
- package/extensions/dev-team/lib/trust.ts +52 -0
- package/extensions/dev-team/lib/usage-breakdown.ts +176 -0
- package/extensions/dev-team/lib/usage-chart.ts +153 -0
- package/extensions/dev-team/lib/usage-command.ts +107 -0
- package/extensions/dev-team/lib/usage-history.ts +203 -0
- package/extensions/dev-team/lib/usage-render.ts +225 -0
- package/extensions/dev-team/lib/usage-split-bar.ts +127 -0
- package/extensions/dev-team/lib/usage-state.ts +116 -0
- package/extensions/dev-team/lib/usage-text.ts +159 -0
- package/extensions/dev-team/lib/usage-view.ts +109 -0
- package/hooks/__pycache__/refactor_test_freeze_guard.cpython-314.pyc +0 -0
- package/hooks/agent_dispatch_ledger.py +190 -0
- package/hooks/autocompact_setup_nudge.py +99 -0
- package/hooks/bash_retry_guard.py +228 -0
- package/hooks/boundary_events_write_guard.py +352 -0
- package/hooks/code_intelligence_nudge.py +293 -0
- package/hooks/code_intelligence_turn_mark.py +317 -0
- package/hooks/codegraph_bootstrap.py +139 -0
- package/hooks/contract_version_guard.py +362 -0
- package/hooks/cost_meter.py +106 -0
- package/hooks/destructive-commands.json +62 -0
- package/hooks/destructive_guard.py +477 -0
- package/hooks/eval_compliance_check.py +440 -0
- package/hooks/guards.json +17 -0
- package/hooks/hooks.json +323 -0
- package/hooks/internal_double_gate.py +296 -0
- package/hooks/js_fp_review.py +212 -0
- package/hooks/knowledge_index.py +119 -0
- package/hooks/lib/__pycache__/artifact_paths.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/atomic_state.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/autocompact_config.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/boundary_events.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/doc_classification.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/gh_pr_create_detect.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/git_safe_diff.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/instrument_log.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/metrics_query.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/plugin_version.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/pre_commit_doc_classifier.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_agent_registry.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_gate_corroboration.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_gate_hash.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/review_verdicts.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/stdin_json.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/stryker_invocation.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/telemetry_consent.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/test_file_classify.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/token_efficiency_limits.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/verify_guard_state.cpython-314.pyc +0 -0
- package/hooks/lib/__pycache__/xunit_v3_operator_gate.cpython-314.pyc +0 -0
- package/hooks/lib/agent_skill_hints.py +74 -0
- package/hooks/lib/artifact_paths.py +263 -0
- package/hooks/lib/atomic_state.py +557 -0
- package/hooks/lib/autocompact_config.py +103 -0
- package/hooks/lib/autoship_log.py +106 -0
- package/hooks/lib/banned_scripts_policy.py +51 -0
- package/hooks/lib/boundary_events.py +436 -0
- package/hooks/lib/build_knowledge_index.py +504 -0
- package/hooks/lib/build_skills_index.py +361 -0
- package/hooks/lib/build_state.py +116 -0
- package/hooks/lib/classify_ship_outcome.py +126 -0
- package/hooks/lib/config_changelog_schema.py +115 -0
- package/hooks/lib/cost_meter.py +955 -0
- package/hooks/lib/doc_classification.py +116 -0
- package/hooks/lib/gh_pr_create_detect.py +136 -0
- package/hooks/lib/git_safe_diff.py +123 -0
- package/hooks/lib/instrument_log.py +66 -0
- package/hooks/lib/iteration_journal_gate.py +197 -0
- package/hooks/lib/knowledge_index_paths.py +88 -0
- package/hooks/lib/mcp_json_repowise.py +177 -0
- package/hooks/lib/metrics_query.py +202 -0
- package/hooks/lib/minimal_yaml.py +434 -0
- package/hooks/lib/plugin_version.py +142 -0
- package/hooks/lib/pre_commit_detect.py +537 -0
- package/hooks/lib/pre_commit_doc_classifier.py +126 -0
- package/hooks/lib/pricing.py +118 -0
- package/hooks/lib/report_pdf.py +371 -0
- package/hooks/lib/review_agent_registry.py +142 -0
- package/hooks/lib/review_dispatch_ledger.py +101 -0
- package/hooks/lib/review_gate_corroboration.py +521 -0
- package/hooks/lib/review_gate_hash.py +252 -0
- package/hooks/lib/review_gate_normalized_hash.py +1115 -0
- package/hooks/lib/review_verdicts.py +301 -0
- package/hooks/lib/run_report.py +160 -0
- package/hooks/lib/skill_categories.yaml +125 -0
- package/hooks/lib/stdin_json.py +57 -0
- package/hooks/lib/stryker_invocation.py +102 -0
- package/hooks/lib/telemetry_consent.py +41 -0
- package/hooks/lib/telemetry_report.py +108 -0
- package/hooks/lib/test_file_classify.py +160 -0
- package/hooks/lib/token_efficiency_limits.py +51 -0
- package/hooks/lib/turn_identity.py +77 -0
- package/hooks/lib/verify_guard_state.py +110 -0
- package/hooks/lib/workflow_state.py +206 -0
- package/hooks/lib/xunit_v3_operator_gate.py +596 -0
- package/hooks/mcp_json_repowise_nudge.py +74 -0
- package/hooks/mutation_adapters/__init__.py +7 -0
- package/hooks/mutation_adapters/__pycache__/__init__.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/lib.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/mutmut.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/pitest.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/stryker.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/__pycache__/stryker_net.cpython-314.pyc +0 -0
- package/hooks/mutation_adapters/lib.py +478 -0
- package/hooks/mutation_adapters/mutmut.py +188 -0
- package/hooks/mutation_adapters/pitest.py +266 -0
- package/hooks/mutation_adapters/stryker.py +157 -0
- package/hooks/mutation_adapters/stryker_net.py +264 -0
- package/hooks/mutation_gate.py +193 -0
- package/hooks/mutation_testing_smoke_gate.py +371 -0
- package/hooks/pending_review_notify.py +121 -0
- package/hooks/phase_marker.py +138 -0
- package/hooks/post_compact_state_reinject.py +180 -0
- package/hooks/post_format.py +115 -0
- package/hooks/pre_commit_knowledge_index.py +128 -0
- package/hooks/pre_commit_review.py +66 -0
- package/hooks/pre_pr_review.py +694 -0
- package/hooks/pre_tool_guard.py +405 -0
- package/hooks/py.sh +73 -0
- package/hooks/refactor-bash-write-patterns.json +29 -0
- package/hooks/refactor_test_bash_guard.py +253 -0
- package/hooks/refactor_test_freeze_guard.py +139 -0
- package/hooks/refactor_test_revert_guard.py +186 -0
- package/hooks/repo_review_nudge.py +287 -0
- package/hooks/review_verdict_recorder.py +464 -0
- package/hooks/scan_bash_command_for_banned_scripts.py +428 -0
- package/hooks/scan_worktree_for_banned_scripts.py +238 -0
- package/hooks/session_learning_trigger.py +248 -0
- package/hooks/skills_index.py +126 -0
- package/hooks/stryker_xunit_shim_guard.py +571 -0
- package/hooks/subagent_completion_guard.py +309 -0
- package/hooks/subagent_skill_context.py +139 -0
- package/hooks/task_completion_metrics.py +216 -0
- package/hooks/tdd_guard.py +229 -0
- package/hooks/telemetry.py +341 -0
- package/hooks/token_efficiency_review.py +194 -0
- package/hooks/verify_guard.py +183 -0
- package/hooks/verify_guard_edit_marker.py +73 -0
- package/hooks/version_check.py +173 -0
- package/knowledge/accepted-risks-schema.md +98 -0
- package/knowledge/adr-decision-criteria.md +64 -0
- package/knowledge/adversarial-review-protocol.md +139 -0
- package/knowledge/agent-registry.md +228 -0
- package/knowledge/agent-review-methodology.md +80 -0
- package/knowledge/ai-friendly-repo-guidelines.md +67 -0
- package/knowledge/architecture-assessment.md +96 -0
- package/knowledge/artifact-lifecycle.md +57 -0
- package/knowledge/cd-maturity-model.md +82 -0
- package/knowledge/cd-test-architecture.md +190 -0
- package/knowledge/ci-cd-file-scope.md +24 -0
- package/knowledge/codegraph-vs-graphify.md +192 -0
- package/knowledge/component-test-patterns.md +139 -0
- package/knowledge/database-change-management.md +80 -0
- package/knowledge/database-test-patterns.md +79 -0
- package/knowledge/decision-defaults.md +88 -0
- package/knowledge/dependency-breaking-techniques.md +116 -0
- package/knowledge/deployment-pipeline.md +86 -0
- package/knowledge/design-smells.md +122 -0
- package/knowledge/directory-enumeration.md +38 -0
- package/knowledge/domain-modeling.md +123 -0
- package/knowledge/evidence-bundle.md +90 -0
- package/knowledge/exploratory-testing-field-guide.md +122 -0
- package/knowledge/failure-routing.md +28 -0
- package/knowledge/fixture-construction.md +56 -0
- package/knowledge/frontend-component-architecture.md +139 -0
- package/knowledge/gherkin-quality-review-dispatch.md +135 -0
- package/knowledge/index.json +6766 -0
- package/knowledge/internal-collaborator-doubling.md +101 -0
- package/knowledge/legacy-test-strategy.md +71 -0
- package/knowledge/long-run-waiting.md +66 -0
- package/knowledge/microservice-testing.md +71 -0
- package/knowledge/model-pricing.json +23 -0
- package/knowledge/mutation-score-formulas.md +60 -0
- package/knowledge/object-calisthenics.md +147 -0
- package/knowledge/oracle-provenance.md +94 -0
- package/knowledge/orchestrator-script-implementation.md +185 -0
- package/knowledge/owasp-detection.md +148 -0
- package/knowledge/plan-review-rubric.md +56 -0
- package/knowledge/proxy-connectivity.md +62 -0
- package/knowledge/reactive-effect-patterns.md +73 -0
- package/knowledge/recon-inventory-excludes.txt +32 -0
- package/knowledge/references/bdd-value-guide.md +61 -0
- package/knowledge/references/csharp-http-client-testing.md +264 -0
- package/knowledge/release-strategies.md +74 -0
- package/knowledge/report-output-location.md +117 -0
- package/knowledge/report-pdf-integration.md +63 -0
- package/knowledge/report-print.css +129 -0
- package/knowledge/report-template.md +114 -0
- package/knowledge/report-to-pdf.md +69 -0
- package/knowledge/request-processing-flow.md +63 -0
- package/knowledge/result-verification.md +52 -0
- package/knowledge/review-agent-output-contract.md +121 -0
- package/knowledge/review-lens-classification.md +113 -0
- package/knowledge/review-rubric.md +62 -0
- package/knowledge/review-template.md +104 -0
- package/knowledge/rule-fixtures/A02.insecure-random-js/negative.js +1 -0
- package/knowledge/rule-fixtures/A02.insecure-random-js/positive.js +1 -0
- package/knowledge/rule-fixtures/A02.weak-hashing-md5/negative.py +1 -0
- package/knowledge/rule-fixtures/A02.weak-hashing-md5/positive.py +1 -0
- package/knowledge/rule-fixtures/A03.command-injection/negative.js +1 -0
- package/knowledge/rule-fixtures/A03.command-injection/positive.js +1 -0
- package/knowledge/rule-fixtures/A03.sql-injection/negative.js +1 -0
- package/knowledge/rule-fixtures/A03.sql-injection/positive.js +1 -0
- package/knowledge/rule-fixtures/A03.xss-innerhtml/negative.js +1 -0
- package/knowledge/rule-fixtures/A03.xss-innerhtml/positive.js +1 -0
- package/knowledge/rule-fixtures/A05.cors-wildcard/negative.js +1 -0
- package/knowledge/rule-fixtures/A05.cors-wildcard/positive.js +1 -0
- package/knowledge/rule-fixtures/A05.default-credentials/negative.js +1 -0
- package/knowledge/rule-fixtures/A05.default-credentials/positive.js +1 -0
- package/knowledge/rule-fixtures/A07.jwt-alg-none/negative.js +1 -0
- package/knowledge/rule-fixtures/A07.jwt-alg-none/positive.js +1 -0
- package/knowledge/rule-fixtures/A08.binary-formatter/negative.cs +1 -0
- package/knowledge/rule-fixtures/A08.binary-formatter/positive.cs +1 -0
- package/knowledge/rule-fixtures/A08.js-eval/negative.js +1 -0
- package/knowledge/rule-fixtures/A08.js-eval/positive.js +1 -0
- package/knowledge/rule-fixtures/A08.object-input-stream/negative.java +1 -0
- package/knowledge/rule-fixtures/A08.object-input-stream/positive.java +1 -0
- package/knowledge/schemas/disposition-register-v1.json +65 -0
- package/knowledge/schemas/recon-envelope-v1.json +198 -0
- package/knowledge/schemas/unified-finding-v1.json +72 -0
- package/knowledge/security-primitives-contract.md +301 -0
- package/knowledge/security-review-rule-map.yaml +107 -0
- package/knowledge/skills-registry.md +72 -0
- package/knowledge/task-size-classifier.md +103 -0
- package/knowledge/telemetry-schema.md +881 -0
- package/knowledge/test-automation-maturity.md +56 -0
- package/knowledge/test-automation-principles.md +71 -0
- package/knowledge/test-cadence-tradeoffs.md +68 -0
- package/knowledge/test-doubles.md +105 -0
- package/knowledge/test-file-indicators.md +22 -0
- package/knowledge/test-layer-gates.md +35 -0
- package/knowledge/test-matrix-examples/django-batch.md +24 -0
- package/knowledge/test-matrix-examples/dotnet-grpc-fronting-api.md +90 -0
- package/knowledge/test-matrix-examples/dotnet-http-consumer.md +131 -0
- package/knowledge/test-matrix-examples/react-node-spa.md +24 -0
- package/knowledge/test-matrix-examples/spring-boot-service.md +25 -0
- package/knowledge/test-matrix-examples/ssr-htmx.md +24 -0
- package/knowledge/test-organization.md +70 -0
- package/knowledge/test-pyramid.md +84 -0
- package/knowledge/test-refactoring.md +67 -0
- package/knowledge/test-review-division-of-labor.md +85 -0
- package/knowledge/test-smells.md +80 -0
- package/knowledge/test-stack-profiles/bdd-frameworks.md +235 -0
- package/knowledge/test-stack-profiles/django.md +13 -0
- package/knowledge/test-stack-profiles/dotnet.md +18 -0
- package/knowledge/test-stack-profiles/go.md +16 -0
- package/knowledge/test-stack-profiles/node.md +16 -0
- package/knowledge/test-stack-profiles/react.md +12 -0
- package/knowledge/test-stack-profiles/spring-boot.md +16 -0
- package/knowledge/test-stack-profiles/ssr-htmx.md +14 -0
- package/knowledge/test-stack-profiles/vue.md +12 -0
- package/knowledge/test-strategy.md +70 -0
- package/knowledge/testability-patterns.md +240 -0
- package/knowledge/testing-quadrants.md +44 -0
- package/knowledge/testing-techniques/approval.md +15 -0
- package/knowledge/testing-techniques/chaos.md +17 -0
- package/knowledge/testing-techniques/fuzz.md +15 -0
- package/knowledge/testing-techniques/property-based.md +15 -0
- package/knowledge/testing-techniques/schema-validation.md +15 -0
- package/knowledge/testing-techniques/screenshot.md +15 -0
- package/knowledge/three-phase-workflow.md +198 -0
- package/knowledge/value-patterns.md +55 -0
- package/knowledge/verification-mode.md +116 -0
- package/knowledge/virtual-service-libraries.md +75 -0
- package/knowledge/wave-consolidation-guidance.md +21 -0
- package/overrides/agents/Explore.md +15 -0
- package/overrides/agents/general-purpose.md +10 -0
- package/overrides/notes/autoship.md +6 -0
- package/overrides/notes/issues-from-assessment.md +3 -0
- package/overrides/notes/issues-from-plan.md +3 -0
- package/overrides/notes/mutation-night-watch.md +3 -0
- package/overrides/notes/mutation-testing.md +3 -0
- package/overrides/notes/pr.md +7 -0
- package/overrides/notes/project-init.md +6 -0
- package/overrides/notes/setup.md +13 -0
- package/overrides/notes/specs.md +3 -0
- package/overrides/skills/headless-run/SKILL.md +45 -0
- package/overrides/skills/upgrade/SKILL.md +30 -0
- package/overrides/skills/version/SKILL.md +25 -0
- package/package.json +36 -0
- package/scripts/authoring_digest.py +93 -0
- package/scripts/autoship_discover.py +121 -0
- package/scripts/autoship_group.py +409 -0
- package/scripts/autoship_proposals.py +494 -0
- package/scripts/autoship_queue.py +291 -0
- package/scripts/autoship_reclaim.py +495 -0
- package/scripts/build_jobs.py +108 -0
- package/scripts/build_rollback_point.py +240 -0
- package/scripts/build_slice_scope.py +157 -0
- package/scripts/build_wave.py +109 -0
- package/scripts/build_wave_reconcile.py +252 -0
- package/scripts/build_worktree_baseref.py +113 -0
- package/scripts/check_agent_scope.py +117 -0
- package/scripts/check_agent_tool_mapping.py +213 -0
- package/scripts/check_review_agent_mcp_tools.py +317 -0
- package/scripts/check_security_assessment_mcp_tools.py +165 -0
- package/scripts/checkpoint_abort.py +502 -0
- package/scripts/claude_setup_review.py +438 -0
- package/scripts/codebase_recon.py +556 -0
- package/scripts/coverage_config.py +623 -0
- package/scripts/coverage_delta_steering.py +330 -0
- package/scripts/coverage_discovery_dotnet.py +315 -0
- package/scripts/coverage_discovery_java.py +742 -0
- package/scripts/coverage_discovery_js.py +546 -0
- package/scripts/coverage_gap_ranking.py +556 -0
- package/scripts/coverage_readiness.py +455 -0
- package/scripts/coverage_report_parse.py +521 -0
- package/scripts/detect_bdd_convention.py +252 -0
- package/scripts/eval_ablation.py +376 -0
- package/scripts/gherkin_analysis_coverage_gate.py +306 -0
- package/scripts/gherkin_cross_feature_duplicate_titles_gate.py +173 -0
- package/scripts/gherkin_effectiveness_rollup.py +238 -0
- package/scripts/gherkin_failure_path_gate.py +206 -0
- package/scripts/gherkin_feature_merge.py +720 -0
- package/scripts/gherkin_stub_gate.py +163 -0
- package/scripts/gherkin_stub_merge.py +479 -0
- package/scripts/git_origin_host.py +88 -0
- package/scripts/install-java-static-analysis.py +110 -0
- package/scripts/issue_deps.py +74 -0
- package/scripts/lib/_bdd_markers.py +28 -0
- package/scripts/lib/_gherkin_text.py +93 -0
- package/scripts/lib/_vendored_tree.py +70 -0
- package/scripts/lib/autoship_state.py +397 -0
- package/scripts/lib/claude_md_guard.py +226 -0
- package/scripts/lib/deterministic_recon.py +446 -0
- package/scripts/lib/mcp_tool_grants.py +211 -0
- package/scripts/lib/plan_parse.py +386 -0
- package/scripts/lib/review_result.py +84 -0
- package/scripts/lib/review_roster.py +86 -0
- package/scripts/lib/session_log/__init__.py +34 -0
- package/scripts/lib/session_log/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/lib/session_log/__pycache__/records.cpython-314.pyc +0 -0
- package/scripts/lib/session_log/classify.py +231 -0
- package/scripts/lib/session_log/corrections.py +194 -0
- package/scripts/lib/session_log/discovery.py +108 -0
- package/scripts/lib/session_log/records.py +218 -0
- package/scripts/lib/session_log/redact.py +76 -0
- package/scripts/lib/session_log/signals.py +373 -0
- package/scripts/lib/session_report_downstream.py +614 -0
- package/scripts/lib/session_report_maintainer.py +1273 -0
- package/scripts/lib/session_report_shared.py +262 -0
- package/scripts/lib/settings_hook_guard.py +157 -0
- package/scripts/lib/slug.py +33 -0
- package/scripts/lib/stub_extractors/__init__.py +82 -0
- package/scripts/lib/stub_extractors/_common.py +328 -0
- package/scripts/lib/stub_extractors/csharp.py +19 -0
- package/scripts/lib/stub_extractors/go.py +173 -0
- package/scripts/lib/stub_extractors/java.py +18 -0
- package/scripts/lib/stub_extractors/jsts.py +126 -0
- package/scripts/mutation_stack_sections.py +149 -0
- package/scripts/mutation_yield_steering.py +345 -0
- package/scripts/orchestrator.py +895 -0
- package/scripts/plan_gherkin_export.py +227 -0
- package/scripts/plan_waves.py +208 -0
- package/scripts/pr_close_keyword_lint.py +108 -0
- package/scripts/progress_guardian.py +888 -0
- package/scripts/recon_inventory.py +273 -0
- package/scripts/review_findings_log.py +93 -0
- package/scripts/run_invariants.py +124 -0
- package/scripts/select_lenses.py +640 -0
- package/scripts/session_report.py +486 -0
- package/scripts/set_autocompact_env.py +221 -0
- package/scripts/ship_resume_guard.py +135 -0
- package/scripts/ship_review_gate.py +63 -0
- package/scripts/specs_convention_marker.py +103 -0
- package/scripts/test_improve_resume.py +277 -0
- package/scripts/test_review_mechanics.py +958 -0
- package/scripts/token_efficiency_review.py +322 -0
- package/scripts/verdict_scope.py +285 -0
- package/scripts/verify_gherkin_quality_critic_isolation.py +296 -0
- package/scripts/verify_tier.py +157 -0
- package/skills/adr-tools/SKILL.md +118 -0
- package/skills/agent-readiness/SKILL.md +105 -0
- package/skills/agent-readiness/ai_friendly_analyzers.py +326 -0
- package/skills/agent-readiness/scanner.py +441 -0
- package/skills/agent-readiness/scorecard.yaml +88 -0
- package/skills/api-design/SKILL.md +115 -0
- package/skills/apply-fixes/SKILL.md +171 -0
- package/skills/apply-test-doubles/SKILL.md +321 -0
- package/skills/artifact-lifecycle/SKILL.md +127 -0
- package/skills/autoship/SKILL.md +1124 -0
- package/skills/benchmark/SKILL.md +105 -0
- package/skills/branch-workflow/SKILL.md +89 -0
- package/skills/browse/SKILL.md +184 -0
- package/skills/browser-testing/SKILL.md +62 -0
- package/skills/browser-testing/references/playwright-patterns.md +216 -0
- package/skills/build/SKILL.md +422 -0
- package/skills/build/references/static-self-heal.md +245 -0
- package/skills/careful/SKILL.md +72 -0
- package/skills/cd-test-architecture/SKILL.md +371 -0
- package/skills/ci-debugging/SKILL.md +105 -0
- package/skills/co-evolution-audit/SKILL.md +269 -0
- package/skills/code-review/SKILL.md +1015 -0
- package/skills/code-review/examples/aggregated-sample.json +56 -0
- package/skills/code-review/examples/sample-report.md +41 -0
- package/skills/code-review/output-format.md +478 -0
- package/skills/code-review/scripts/activation.py +86 -0
- package/skills/code-review/scripts/change_impact.py +357 -0
- package/skills/code-review/scripts/change_shape.py +372 -0
- package/skills/code-review/scripts/change_size.py +212 -0
- package/skills/code-review/scripts/changed_file_list.py +141 -0
- package/skills/code-review/scripts/closing_pass.py +187 -0
- package/skills/code-review/scripts/consolidate.py +277 -0
- package/skills/code-review/scripts/contract_failure_report.py +185 -0
- package/skills/code-review/scripts/dispatch_reconcile.py +66 -0
- package/skills/code-review/scripts/dispatch_waves.py +164 -0
- package/skills/code-review/scripts/finding_signature.py +446 -0
- package/skills/code-review/scripts/ledger.py +283 -0
- package/skills/code-review/scripts/partition.py +169 -0
- package/skills/code-review/scripts/render_tiered_findings.py +274 -0
- package/skills/code-review/scripts/repo_invariants.py +1066 -0
- package/skills/code-review/scripts/review_context_pack.py +306 -0
- package/skills/code-review/scripts/review_round_log.py +345 -0
- package/skills/code-review/scripts/review_value_coverage.py +297 -0
- package/skills/code-review/scripts/validate_review_output.py +467 -0
- package/skills/code-review/sliced-mode.md +205 -0
- package/skills/competitive-analysis/SKILL.md +191 -0
- package/skills/context-loading-protocol/SKILL.md +157 -0
- package/skills/continue/SKILL.md +90 -0
- package/skills/cost-report/SKILL.md +178 -0
- package/skills/coverage-baseline/SKILL.md +335 -0
- package/skills/coverage-baseline/references/multi-project-discovery.md +202 -0
- package/skills/coverage-delta/SKILL.md +181 -0
- package/skills/coverage-delta/references/mutation-gate.md +70 -0
- package/skills/design-doc/SKILL.md +95 -0
- package/skills/design-interrogation/SKILL.md +89 -0
- package/skills/design-it-twice/SKILL.md +91 -0
- package/skills/docker-image-audit/SKILL.md +108 -0
- package/skills/docker-image-audit/references/install-guide.md +64 -0
- package/skills/docker-image-audit/references/report-template.md +73 -0
- package/skills/docker-image-create/SKILL.md +185 -0
- package/skills/domain-analysis/SKILL.md +183 -0
- package/skills/domain-driven-design/SKILL.md +194 -0
- package/skills/exploratory-testing/SKILL.md +108 -0
- package/skills/explore/SKILL.md +51 -0
- package/skills/farley-score/SKILL.md +165 -0
- package/skills/feature-file-validation/SKILL.md +78 -0
- package/skills/feature-file-validation/references/validation-rules.md +115 -0
- package/skills/feedback-learning/SKILL.md +414 -0
- package/skills/fix/SKILL.md +450 -0
- package/skills/freeze/SKILL.md +68 -0
- package/skills/frontend-architecture/SKILL.md +113 -0
- package/skills/gherkin-derive/SKILL.md +630 -0
- package/skills/gherkin-public/SKILL.md +266 -0
- package/skills/governance-compliance/SKILL.md +150 -0
- package/skills/guard/SKILL.md +75 -0
- package/skills/handoff/SKILL.md +139 -0
- package/skills/handoff/references/summary-templates.md +242 -0
- package/skills/harness-audit/SKILL.md +751 -0
- package/skills/harness-audit/scripts/lesson_validate.py +386 -0
- package/skills/harness-audit/scripts/redundancy_criterion.py +188 -0
- package/skills/headless-run/SKILL.md +45 -0
- package/skills/headless-run/scripts/isolated_dispatch.py +381 -0
- package/skills/help/SKILL.md +72 -0
- package/skills/hexagonal-architecture/SKILL.md +85 -0
- package/skills/human-oversight-protocol/SKILL.md +224 -0
- package/skills/issues-from-assessment/SKILL.md +223 -0
- package/skills/issues-from-plan/SKILL.md +133 -0
- package/skills/legacy-code/SKILL.md +132 -0
- package/skills/mermaid-diagramming/SKILL.md +120 -0
- package/skills/mutation-night-watch/SKILL.md +154 -0
- package/skills/mutation-night-watch/references/scheduling.md +135 -0
- package/skills/mutation-testing/SKILL.md +396 -0
- package/skills/mutation-testing/references/languages/csharp-stryker-net.md +676 -0
- package/skills/mutation-testing/references/languages/go-go-mutesting.md +95 -0
- package/skills/mutation-testing/references/languages/java-pitest.md +77 -0
- package/skills/mutation-testing/references/languages/javascript-stryker.md +188 -0
- package/skills/mutation-testing/references/languages/python-mutmut.md +97 -0
- package/skills/mutation-testing/references/time-estimation.md +34 -0
- package/skills/mutation-testing/references/tool-detection.md +15 -0
- package/skills/mutation-testing/references/workflow-callers.md +23 -0
- package/skills/mutation-testing/scripts/__pycache__/xunit_v3_feature_detector.cpython-314.pyc +0 -0
- package/skills/mutation-testing/scripts/csharp_stryker_net_slice_runner.py +635 -0
- package/skills/mutation-testing/scripts/csharp_stryker_net_status_loop.py +525 -0
- package/skills/mutation-testing/scripts/csharp_stryker_net_wrapper.py +681 -0
- package/skills/mutation-testing/scripts/mutation_baseline_reuse.py +292 -0
- package/skills/mutation-testing/scripts/mutation_exclude_policy.py +268 -0
- package/skills/mutation-testing/scripts/mutation_feasibility_gate.py +463 -0
- package/skills/mutation-testing/scripts/mutation_kill_headless.py +331 -0
- package/skills/mutation-testing/scripts/mutation_kill_insert.py +199 -0
- package/skills/mutation-testing/scripts/mutation_kill_insert_python.py +150 -0
- package/skills/mutation-testing/scripts/mutation_kill_loop.py +869 -0
- package/skills/mutation-testing/scripts/mutation_kill_loop_python.py +949 -0
- package/skills/mutation-testing/scripts/mutation_kill_retry.py +592 -0
- package/skills/mutation-testing/scripts/mutation_kill_shared.py +620 -0
- package/skills/mutation-testing/scripts/mutation_nightwatch.py +462 -0
- package/skills/mutation-testing/scripts/mutation_nightwatch_stacks.py +425 -0
- package/skills/mutation-testing/scripts/mutation_report.py +743 -0
- package/skills/mutation-testing/scripts/mutation_report_cli.py +175 -0
- package/skills/mutation-testing/scripts/mutation_safety_gate.py +69 -0
- package/skills/mutation-testing/scripts/stryker_shard_pipeline.py +847 -0
- package/skills/mutation-testing/scripts/stryker_shard_setup.py +440 -0
- package/skills/mutation-testing/scripts/stryker_timeout_retry.py +142 -0
- package/skills/mutation-testing/scripts/xunit_v3_feature_detector.py +341 -0
- package/skills/performance-benchmark/SKILL.md +174 -0
- package/skills/performance-benchmark/examples/report-format.md +43 -0
- package/skills/performance-benchmark/references/benchmark-script.md +169 -0
- package/skills/performance-metrics/SKILL.md +265 -0
- package/skills/plan/SKILL.md +199 -0
- package/skills/plan/references/gherkin-persistence.md +43 -0
- package/skills/plan/references/plan-template.md +182 -0
- package/skills/pr/SKILL.md +289 -0
- package/skills/pr/scripts/gate_retry_state.py +368 -0
- package/skills/project-init/README.md +141 -0
- package/skills/project-init/SKILL.md +1197 -0
- package/skills/project-init/evals/evals.json +200 -0
- package/skills/project-init/references/capability-tools.md +55 -0
- package/skills/project-init/references/configs.md +221 -0
- package/skills/property-based-testing/SKILL.md +121 -0
- package/skills/property-based-testing/fixtures/invariant_fixture.py +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/README.md +42 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/LICENSE +21 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/README.md +263 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/fast-check.js +12147 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/package.json +3 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/cjs/types57/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/fast-check.js +12011 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/rolldown-runtime-D7D4PA-g.js +13 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/lib/types57/fast-check.d.ts +5165 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/fast-check/package.json +94 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/LICENSE +21 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/README.md +168 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/RandomGenerator-DcXj09Ch.d.ts +14 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformBigInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformBigInt.js +38 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat32.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat32.js +18 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat64.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformFloat64.js +22 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/distribution/uniformInt.js +134 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/RandomGenerator-DcXj09Ch.d.ts +14 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformBigInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformBigInt.js +37 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat32.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat32.js +17 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat64.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformFloat64.js +21 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformInt.d.ts +15 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/distribution/uniformInt.js +133 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/congruential32.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/congruential32.js +44 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/mersenne.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/mersenne.js +90 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xoroshiro128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xoroshiro128plus.js +80 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xorshift128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/generator/xorshift128plus.js +78 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/package.json +3 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.d.ts +16 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/RandomGenerator.d.ts +2 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/types/RandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/generateN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/generateN.js +8 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/purify.d.ts +12 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/purify.js +9 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/skipN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/esm/utils/skipN.js +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/congruential32.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/congruential32.js +46 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/mersenne.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/mersenne.js +92 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xoroshiro128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xoroshiro128plus.js +82 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xorshift128plus.d.ts +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/generator/xorshift128plus.js +80 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/JumpableRandomGenerator.d.ts +16 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/JumpableRandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/RandomGenerator.d.ts +2 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/types/RandomGenerator.js +0 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/generateN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/generateN.js +9 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/purify.d.ts +12 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/purify.js +10 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/skipN.d.ts +6 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/lib/utils/skipN.js +7 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/node_modules/pure-rand/package.json +133 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/package-lock.json +1179 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/package.json +14 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/roundtrip.js +29 -0
- package/skills/property-based-testing/fixtures/js-roundtrip/roundtrip.properties.test.js +16 -0
- package/skills/property-based-testing/fixtures/no_property_fixture.py +10 -0
- package/skills/property-based-testing/fixtures/roundtrip_fixture.py +16 -0
- package/skills/property-based-testing/references/languages/javascript.md +54 -0
- package/skills/property-based-testing/scripts/detect_and_dispatch.py +80 -0
- package/skills/property-based-testing/scripts/hypothesis_scaffold.py +276 -0
- package/skills/proxy-resilience/SKILL.md +84 -0
- package/skills/quality-gate-pipeline/SKILL.md +184 -0
- package/skills/quality-targets-converge/SKILL.md +254 -0
- package/skills/repo-review/SKILL.md +159 -0
- package/skills/report-pdf/SKILL.md +66 -0
- package/skills/review/SKILL.md +47 -0
- package/skills/review-agent/SKILL.md +152 -0
- package/skills/review-summary/SKILL.md +73 -0
- package/skills/run-report/SKILL.md +70 -0
- package/skills/semantic-duplication-scan/SKILL.md +337 -0
- package/skills/semantic-scan/SKILL.md +53 -0
- package/skills/semgrep-analyze/SKILL.md +139 -0
- package/skills/setup/SKILL.md +1122 -0
- package/skills/ship/SKILL.md +240 -0
- package/skills/source-verification/SKILL.md +210 -0
- package/skills/source-verification/scripts/claim_extractor.py +155 -0
- package/skills/specs/.size-baseline.json +4 -0
- package/skills/specs/SKILL.md +243 -0
- package/skills/specs/references/completeness-checklist.md +83 -0
- package/skills/specs/references/extraction.md +58 -0
- package/skills/specs/references/glossary.md +59 -0
- package/skills/specs/references/persistence.md +115 -0
- package/skills/specs/references/predictability-check.md +77 -0
- package/skills/static-analysis-integration/SKILL.md +235 -0
- package/skills/static-analysis-integration/adapters/_envelope.py +26 -0
- package/skills/static-analysis-integration/adapters/jscpd-adapter.py +66 -0
- package/skills/static-analysis-integration/adapters/lizard-adapter.py +81 -0
- package/skills/static-analysis-integration/adapters/mypy-adapter.py +50 -0
- package/skills/static-analysis-integration/adapters/mypy-src-layout.py +93 -0
- package/skills/static-analysis-integration/adapters/security-review-adapter.py +212 -0
- package/skills/static-analysis-integration/maintenance.md +23 -0
- package/skills/static-analysis-integration/references/language-setup.md +228 -0
- package/skills/static-analysis-integration/references/sarif-parser.md +124 -0
- package/skills/static-analysis-integration/references/security-review-adapter.md +118 -0
- package/skills/static-analysis-integration/references/tool-configs.md +617 -0
- package/skills/static-analysis-integration/rulesets/pmd-quickstart.xml +24 -0
- package/skills/stryker-xunit-v2-shim/SKILL.md +274 -0
- package/skills/stryker-xunit-v2-shim/references/shim-howto.md +256 -0
- package/skills/stryker-xunit-v2-shim/scripts/generate_shim.py +143 -0
- package/skills/systematic-debugging/SKILL.md +130 -0
- package/skills/telemetry/SKILL.md +75 -0
- package/skills/test-audit-disable/SKILL.md +129 -0
- package/skills/test-design/SKILL.md +177 -0
- package/skills/test-design/scripts/__pycache__/internal_double_detector.cpython-314.pyc +0 -0
- package/skills/test-design/scripts/internal_double_detector.py +631 -0
- package/skills/test-design-advisor/SKILL.md +166 -0
- package/skills/test-driven-development/SKILL.md +169 -0
- package/skills/test-health/SKILL.md +262 -0
- package/skills/test-improve/SKILL.md +239 -0
- package/skills/test-improve/references/phase-0-approach-contract.md +228 -0
- package/skills/test-improve/references/phase-1-analyze.md +131 -0
- package/skills/test-improve/references/phase-2-baseline.md +121 -0
- package/skills/test-improve/references/phase-3-derive-gherkin.md +53 -0
- package/skills/test-improve/references/phase-4-plan-fixes.md +34 -0
- package/skills/test-improve/references/phase-5-improve.md +215 -0
- package/skills/test-improve/references/phase-6-refactor-decision.md +45 -0
- package/skills/test-improve/references/phase-7-refactor.md +44 -0
- package/skills/test-improve/references/phase-8-validate.md +66 -0
- package/skills/test-improve/references/phase-9-close-out-prompt.md +11 -0
- package/skills/test-improve/references/phase-9-report.md +62 -0
- package/skills/test-improve/references/review-loop.md +92 -0
- package/skills/test-improve/templates/executive-summary.md +123 -0
- package/skills/threat-modeling/SKILL.md +108 -0
- package/skills/triage/SKILL.md +211 -0
- package/skills/ubiquitous-language/SKILL.md +192 -0
- package/skills/ubiquitous-language/scripts/collect_domain_signals.py +300 -0
- package/skills/unfreeze/SKILL.md +37 -0
- package/skills/upgrade/SKILL.md +31 -0
- package/skills/upgrade/scripts/check_version_drift.py +113 -0
- package/skills/upgrade/scripts/enable_autoupdate.py +149 -0
- package/skills/version/SKILL.md +25 -0
- package/sync/__pycache__/sync_upstream.cpython-314.pyc +0 -0
- package/sync/sync_upstream.py +293 -0
- package/templates/ACCEPTED-RISKS.md.tmpl +46 -0
- package/templates/agents/agent-template.md +151 -0
- package/templates/agents/angular-testing.md +66 -0
- package/templates/agents/csharp-quality.md +63 -0
- package/templates/agents/esm-enforcer.md +52 -0
- package/templates/agents/front-end-testing.md +65 -0
- package/templates/agents/go-quality.md +65 -0
- package/templates/agents/python-quality.md +62 -0
- package/templates/agents/react-testing.md +61 -0
- package/templates/agents/ts-enforcer.md +60 -0
- package/templates/agents/twelve-factor-audit.md +49 -0
- package/tools/entropy-check.py +250 -0
- package/tools/model-hash-verify.py +213 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Docker Audit Tool Installation Guide
|
|
2
|
+
|
|
3
|
+
When the user is missing hadolint, trivy, or grype, share the relevant section below.
|
|
4
|
+
|
|
5
|
+
## hadolint
|
|
6
|
+
|
|
7
|
+
Hadolint is a Dockerfile linter that also integrates ShellCheck for `RUN` instructions.
|
|
8
|
+
|
|
9
|
+
- **macOS**: `brew install hadolint`
|
|
10
|
+
- **Windows** (Scoop): `scoop install hadolint`
|
|
11
|
+
- **Linux** (binary):
|
|
12
|
+
```bash
|
|
13
|
+
curl -sL -o /usr/local/bin/hadolint \
|
|
14
|
+
"https://github.com/hadolint/hadolint/releases/latest/download/hadolint-Linux-x86_64"
|
|
15
|
+
chmod +x /usr/local/bin/hadolint
|
|
16
|
+
```
|
|
17
|
+
- **Docker** (no install): `docker run --rm -i hadolint/hadolint < Dockerfile`
|
|
18
|
+
- **All platforms**: Download from [GitHub releases](https://github.com/hadolint/hadolint/releases)
|
|
19
|
+
|
|
20
|
+
## Trivy
|
|
21
|
+
|
|
22
|
+
Trivy scans container images, filesystems, and git repos for vulnerabilities, misconfigurations, and secrets.
|
|
23
|
+
|
|
24
|
+
- **macOS**: `brew install trivy`
|
|
25
|
+
- **Linux** (apt):
|
|
26
|
+
```bash
|
|
27
|
+
sudo apt-get install -y wget apt-transport-https gnupg lsb-release
|
|
28
|
+
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
|
|
29
|
+
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/trivy.list
|
|
30
|
+
sudo apt-get update && sudo apt-get install -y trivy
|
|
31
|
+
```
|
|
32
|
+
- **Linux** (rpm):
|
|
33
|
+
```bash
|
|
34
|
+
cat << 'EOF' | sudo tee /etc/yum.repos.d/trivy.repo
|
|
35
|
+
[trivy]
|
|
36
|
+
name=Trivy repository
|
|
37
|
+
baseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/$basearch/
|
|
38
|
+
gpgcheck=0
|
|
39
|
+
enabled=1
|
|
40
|
+
EOF
|
|
41
|
+
sudo yum -y install trivy
|
|
42
|
+
```
|
|
43
|
+
- **Docker** (no install): `docker run --rm aquasec/trivy image <image-name>`
|
|
44
|
+
- **All platforms**: See [aquasecurity/trivy installation docs](https://aquasecurity.github.io/trivy/latest/getting-started/installation/)
|
|
45
|
+
|
|
46
|
+
## Grype
|
|
47
|
+
|
|
48
|
+
Grype scans container images and filesystems for known vulnerabilities using Anchore's database.
|
|
49
|
+
|
|
50
|
+
- **macOS**: `brew install grype`
|
|
51
|
+
- **Linux / macOS** (install script):
|
|
52
|
+
```bash
|
|
53
|
+
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
|
|
54
|
+
```
|
|
55
|
+
- **Docker** (no install): `docker run --rm anchore/grype:latest <image-name>`
|
|
56
|
+
- **All platforms**: See [anchore/grype installation docs](https://github.com/anchore/grype#installation)
|
|
57
|
+
|
|
58
|
+
## Verify installation
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
command -v hadolint && command -v trivy && command -v grype
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If all three are installed, this prints their paths.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Docker Audit Report Template
|
|
2
|
+
|
|
3
|
+
Use this structure when writing the report file. Replace placeholders with actual findings.
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# Docker Image Audit Report
|
|
7
|
+
|
|
8
|
+
**Image**: <image-name-or-dockerfile-path>
|
|
9
|
+
**Date**: <date>
|
|
10
|
+
**Tools**: hadolint <version>, Trivy <version>, Grype <version>
|
|
11
|
+
|
|
12
|
+
## Executive Summary
|
|
13
|
+
|
|
14
|
+
| Category | Critical | High | Medium | Low | Info |
|
|
15
|
+
|----------|----------|------|--------|-----|------|
|
|
16
|
+
| Dockerfile issues (hadolint) | X | X | X | X | X |
|
|
17
|
+
| Structural issues (manual) | X | X | X | X | - |
|
|
18
|
+
| OS vulnerabilities (Trivy) | X | X | X | X | - |
|
|
19
|
+
| OS vulnerabilities (Grype) | X | X | X | X | - |
|
|
20
|
+
| App dependency vulnerabilities | X | X | X | X | - |
|
|
21
|
+
| Image size & efficiency | - | X | X | X | - |
|
|
22
|
+
| **Total** | **X** | **X** | **X** | **X** | **X** |
|
|
23
|
+
|
|
24
|
+
**Image size**: XXX MB
|
|
25
|
+
**Recommended target**: XXX MB (using <recommended-base>)
|
|
26
|
+
**Non-root user**: Yes/No
|
|
27
|
+
**Health check**: Present/Missing
|
|
28
|
+
|
|
29
|
+
## Critical and High Findings
|
|
30
|
+
|
|
31
|
+
### [SEVERITY] Finding title
|
|
32
|
+
- **Source**: hadolint/Trivy/Grype/structural
|
|
33
|
+
- **Rule/CVE**: DL3006 / CVE-2024-XXXXX
|
|
34
|
+
- **Component**: package name and version
|
|
35
|
+
- **Description**: What the vulnerability or issue is
|
|
36
|
+
- **Fix**: Specific action to take (show before/after for Dockerfile changes, version to upgrade to, or mitigation if no fix available)
|
|
37
|
+
|
|
38
|
+
## Medium and Low Findings
|
|
39
|
+
|
|
40
|
+
Same structure, grouped by category for readability.
|
|
41
|
+
|
|
42
|
+
## Image Size Analysis
|
|
43
|
+
|
|
44
|
+
### Current Layer Breakdown
|
|
45
|
+
| Size | Layer |
|
|
46
|
+
|------|-------|
|
|
47
|
+
| XX MB | RUN apt-get install ... |
|
|
48
|
+
| XX MB | COPY . . |
|
|
49
|
+
|
|
50
|
+
### Size Reduction Recommendations
|
|
51
|
+
1. Recommendation with estimated size savings
|
|
52
|
+
|
|
53
|
+
## Cross-Validation Summary
|
|
54
|
+
|
|
55
|
+
Findings detected by both Trivy and Grype have high confidence.
|
|
56
|
+
Findings detected by only one scanner should be investigated but may be false positives.
|
|
57
|
+
|
|
58
|
+
| CVE | Trivy | Grype | Confidence |
|
|
59
|
+
|-----|-------|-------|------------|
|
|
60
|
+
| CVE-2024-XXXXX | Yes | Yes | High |
|
|
61
|
+
| CVE-2024-YYYYY | Yes | No | Medium |
|
|
62
|
+
|
|
63
|
+
## Recommended Dockerfile Changes
|
|
64
|
+
|
|
65
|
+
Group changes by priority:
|
|
66
|
+
|
|
67
|
+
1. **Separation of concerns** (move CI/CD steps out of Dockerfile)
|
|
68
|
+
2. **Security fixes** (secrets to BuildKit mounts, non-root user, TLS, base image)
|
|
69
|
+
3. **Vulnerability remediation** (package upgrades, base image swap)
|
|
70
|
+
4. **Build correctness** (Debug/Release mismatch, remove post-build workarounds)
|
|
71
|
+
5. **Cache & size optimization** (COPY ordering, .dockerignore, layer consolidation, distroless)
|
|
72
|
+
6. **Best practices** (HEALTHCHECK, labels, WORKDIR, dead stage cleanup)
|
|
73
|
+
```
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docker-image-create
|
|
3
|
+
description: Generate production-ready Dockerfiles from project source code. Detects language/framework automatically and produces multi-stage builds with minimal, distroless, or slim base images. Use this skill whenever the user wants to containerize an application, create a Dockerfile, dockerize a project, build a Docker image, or says things like "make this run in Docker", "create a container for this app", "I need a Dockerfile", "package this for deployment", or "containerize this service". Also trigger when the user has an existing Dockerfile and wants it rewritten for production use, or when they ask about Docker best practices for their project.
|
|
4
|
+
role: worker
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Docker Image Creation
|
|
9
|
+
|
|
10
|
+
Generate production-ready Dockerfiles by analyzing language, framework, and dependencies. Output is a multi-stage build optimized for small image size, fast builds, and minimal attack surface.
|
|
11
|
+
|
|
12
|
+
**Default base image strategy**: distroless when possible (only the app and its runtime — no shell, no package manager, no OS utilities; minimal CVE exposure). Fall back to slim (`node:22-slim`, `python:3.12-slim`) when the runtime needs OS-level libraries or a shell for debugging.
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
### Step 1: Detect the project
|
|
17
|
+
|
|
18
|
+
Scan the project root to identify:
|
|
19
|
+
|
|
20
|
+
1. **Language + version** (from version files / configs):
|
|
21
|
+
- `package.json` (Node.js — `engines.node`)
|
|
22
|
+
- `go.mod` (Go — `go` directive)
|
|
23
|
+
- `requirements.txt` / `pyproject.toml` / `Pipfile` (Python — `python_requires` / `.python-version`)
|
|
24
|
+
- `pom.xml` / `build.gradle{,kts}` (Java/Kotlin — `sourceCompatibility`)
|
|
25
|
+
- `*.csproj` / `*.fsproj` (C#/F# — `TargetFramework`)
|
|
26
|
+
- `mix.exs` (Elixir), `Gemfile` (Ruby)
|
|
27
|
+
|
|
28
|
+
2. **Framework** (drives build command + output structure):
|
|
29
|
+
- Node.js: Next.js, Remix, Express, Fastify, NestJS, Astro, SvelteKit
|
|
30
|
+
- Python: FastAPI, Flask, Django
|
|
31
|
+
- Go: net/http, Gin, Echo, Fiber
|
|
32
|
+
- Java: Spring Boot, Quarkus, Micronaut
|
|
33
|
+
- .NET: ASP.NET Core, Blazor, gRPC, minimal APIs
|
|
34
|
+
|
|
35
|
+
3. **Package manager** (drives install command):
|
|
36
|
+
- Node.js: npm (`package-lock.json`), yarn (`yarn.lock`), pnpm (`pnpm-lock.yaml`), bun (`bun.lockb`)
|
|
37
|
+
- Python: pip (`requirements.txt`), poetry (`poetry.lock`), pipenv (`Pipfile.lock`), uv (`uv.lock`)
|
|
38
|
+
|
|
39
|
+
4. **Entry point**: `package.json` `scripts.start` / `main`, `Procfile`, existing Dockerfile `CMD`, or framework convention (`main.go`, `app.py`, `Application.java`).
|
|
40
|
+
|
|
41
|
+
5. **Existing Docker artifacts**: `.dockerignore`, existing `Dockerfile`, `docker-compose.yml`.
|
|
42
|
+
|
|
43
|
+
Present a detection summary to the user and ask: "Want me to adjust anything before generating?"
|
|
44
|
+
|
|
45
|
+
### Step 2: Ask about registry and build tools
|
|
46
|
+
|
|
47
|
+
Ask:
|
|
48
|
+
|
|
49
|
+
1. **Container registry?** (Docker Hub, ghcr.io, ECR, GCR, ACR) — affects `FROM` paths and login steps.
|
|
50
|
+
2. **Build tool?** Default: BuildKit (`DOCKER_BUILDKIT=1`). Enables cache mounts, secret mounts, and parallel stages.
|
|
51
|
+
3. **Generate `.dockerignore`?** If missing or sparse.
|
|
52
|
+
4. **Generate `docker-compose.yml`?** For local development.
|
|
53
|
+
|
|
54
|
+
Proceed with sensible defaults if the user says "just go with defaults."
|
|
55
|
+
|
|
56
|
+
### Step 3: Generate the Dockerfile
|
|
57
|
+
|
|
58
|
+
**Layer order** (least-changed → most-changed) for cache efficiency: base image → system deps → dependency manifest + install → source code → build → final stage with only the runtime artifact.
|
|
59
|
+
|
|
60
|
+
**Cache-friendly install** — copy manifests first, install, then copy source:
|
|
61
|
+
|
|
62
|
+
```dockerfile
|
|
63
|
+
COPY package.json pnpm-lock.yaml ./
|
|
64
|
+
RUN pnpm install --frozen-lockfile
|
|
65
|
+
COPY . .
|
|
66
|
+
RUN pnpm build
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Never `COPY . .` before install — busts the cache on every source change.
|
|
70
|
+
|
|
71
|
+
**Stages**: `deps` (install) → `build` (compile/bundle) → `runtime` (minimal base with artifact only). Two stages suffice for interpreted languages without a build step.
|
|
72
|
+
|
|
73
|
+
**Base image table**:
|
|
74
|
+
|
|
75
|
+
| Language | Build stage | Runtime stage |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| Go | `golang:<version>` | `gcr.io/distroless/static-debian12` |
|
|
78
|
+
| Java | `eclipse-temurin:<version>` | `gcr.io/distroless/java21-debian12` |
|
|
79
|
+
| Node.js | `node:<version>` | `node:<version>-slim` or `gcr.io/distroless/nodejs22-debian12` |
|
|
80
|
+
| Python | `python:<version>` | `python:<version>-slim` |
|
|
81
|
+
| .NET | `mcr.microsoft.com/dotnet/sdk:<version>` | `mcr.microsoft.com/dotnet/aspnet:<version>-alpine` |
|
|
82
|
+
|
|
83
|
+
Pin major.minor (e.g., `node:22.12`, not `node:latest`). Digest-pin only for high-security environments.
|
|
84
|
+
|
|
85
|
+
**Security defaults**:
|
|
86
|
+
- Run as non-root in the final stage (`USER nonroot` for distroless; create a user for slim bases)
|
|
87
|
+
- Never copy `.env`, secrets, or credentials into the image
|
|
88
|
+
- Use `--frozen-lockfile` / `--ci` for reproducible installs
|
|
89
|
+
- Set `NODE_ENV=production` or equivalent
|
|
90
|
+
- Use `COPY --chown` to set ownership without running as root
|
|
91
|
+
|
|
92
|
+
**Health checks** (when the app exposes HTTP):
|
|
93
|
+
|
|
94
|
+
```dockerfile
|
|
95
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
|
|
96
|
+
CMD ["wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"] || exit 1
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Distroless images lack `wget`/`curl` — skip HEALTHCHECK and rely on the orchestrator (Kubernetes liveness probes etc.).
|
|
100
|
+
|
|
101
|
+
**OCI labels**:
|
|
102
|
+
|
|
103
|
+
```dockerfile
|
|
104
|
+
LABEL org.opencontainers.image.source="https://github.com/OWNER/REPO"
|
|
105
|
+
LABEL org.opencontainers.image.description="Brief description"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Step 4: Generate .dockerignore
|
|
109
|
+
|
|
110
|
+
If absent or sparse, write one tailored to the detected language. Common patterns:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
.git
|
|
114
|
+
.github
|
|
115
|
+
node_modules
|
|
116
|
+
dist
|
|
117
|
+
build
|
|
118
|
+
*.md
|
|
119
|
+
.env*
|
|
120
|
+
.vscode
|
|
121
|
+
.idea
|
|
122
|
+
Dockerfile*
|
|
123
|
+
docker-compose*
|
|
124
|
+
.dockerignore
|
|
125
|
+
coverage
|
|
126
|
+
.nyc_output
|
|
127
|
+
__pycache__
|
|
128
|
+
*.pyc
|
|
129
|
+
.pytest_cache
|
|
130
|
+
.mypy_cache
|
|
131
|
+
bin/
|
|
132
|
+
obj/
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Drop language-irrelevant patterns (no Python patterns for a Go project).
|
|
136
|
+
|
|
137
|
+
### Step 5: Generate docker-compose.yml (if requested)
|
|
138
|
+
|
|
139
|
+
Development-focused: volume mounts for live reload, port mappings, env-file references, dependent services (database, cache) if detected.
|
|
140
|
+
|
|
141
|
+
### Step 6: Provide build and run instructions
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
docker build -t my-app .
|
|
145
|
+
docker run -p 3000:3000 my-app
|
|
146
|
+
|
|
147
|
+
# With BuildKit
|
|
148
|
+
DOCKER_BUILDKIT=1 docker build -t my-app .
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Include framework-specific notes (e.g., Next.js standalone mode requires `output: 'standalone'` in `next.config.js`).
|
|
152
|
+
|
|
153
|
+
## Language-specific patterns
|
|
154
|
+
|
|
155
|
+
### Node.js / Next.js (standalone)
|
|
156
|
+
- `--frozen-lockfile` for reproducible installs
|
|
157
|
+
- For Next.js: enable standalone output and copy `.next/standalone` + `.next/static` + `public/`
|
|
158
|
+
- Set `NODE_ENV=production` before the build step (for tree-shaking)
|
|
159
|
+
- Use the `node` user (built-in to slim images)
|
|
160
|
+
|
|
161
|
+
### Go
|
|
162
|
+
- `CGO_ENABLED=0` for fully static binaries (works with distroless/static)
|
|
163
|
+
- Copy only the binary to the final stage
|
|
164
|
+
- Use scratch or distroless/static — Go binaries are self-contained
|
|
165
|
+
- Strip debug info: `GOFLAGS="-trimpath"` + `-ldflags="-s -w"`
|
|
166
|
+
|
|
167
|
+
### Python
|
|
168
|
+
- `--no-cache-dir` with pip (don't bake wheels into the image)
|
|
169
|
+
- Poetry: export to requirements.txt in the build stage, pip-install in runtime
|
|
170
|
+
- `--no-install-recommends` for `apt-get`
|
|
171
|
+
- Consider `uv` for faster installs
|
|
172
|
+
|
|
173
|
+
### C# / .NET
|
|
174
|
+
- Build stage `mcr.microsoft.com/dotnet/sdk:<version>`; runtime `mcr.microsoft.com/dotnet/aspnet:<version>-alpine`
|
|
175
|
+
- Restore first for cache efficiency: `COPY *.csproj ./` → `dotnet restore` → copy source → `dotnet publish`
|
|
176
|
+
- `dotnet publish -c Release -o /app --no-restore` (skip redundant restore)
|
|
177
|
+
- Self-contained: `dotnet publish -c Release --self-contained -r linux-musl-x64 -p:PublishTrimmed=true`
|
|
178
|
+
- Globalization invariant if no culture-specific formatting: `ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true` (saves ~30MB)
|
|
179
|
+
- Multi-project solutions: copy all `.csproj` preserving structure, restore, copy everything, publish entry-point project
|
|
180
|
+
- `USER app` (built-in non-root in .NET 8+), `ASPNETCORE_URLS=http://+:8080` (default for non-root)
|
|
181
|
+
|
|
182
|
+
### Java (Spring Boot)
|
|
183
|
+
- Layered jars: `java -Djarmode=layertools -jar app.jar extract`; copy dependencies, spring-boot-loader, snapshot-dependencies, application as separate layers
|
|
184
|
+
- `jlink` for custom minimal JRE
|
|
185
|
+
- `-XX:+UseContainerSupport` for correct memory detection in containers
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: domain-analysis
|
|
3
|
+
description: Strategic DDD health assessment of an existing system. Use whenever someone asks to analyze their architecture, assess domain health, find coupling problems, map bounded contexts, trace event flows across services, or understand what is slowing down delivery. Trigger on phrases like "what's wrong with our architecture", "where is the coupling", "assess our domain", "event storming", "value stream", "friction report", "bounded contexts", or "why is everything so tangled". Apply to existing codebases — use domain-driven-design skill for greenfield modeling.
|
|
4
|
+
role: worker
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Domain Analysis
|
|
9
|
+
|
|
10
|
+
Role: worker. This command produces a domain-health report — it is analytical,
|
|
11
|
+
not prescriptive; it does not redesign code or write implementation.
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
Assess the domain health of an existing multi-component system. Produce a structured report covering bounded context boundaries, context map relationships, domain event flows, value stream throughput, and a friction report identifying where the architecture inhibits continuous delivery.
|
|
16
|
+
|
|
17
|
+
This skill is analytical, not prescriptive. It describes what *is*, not what should be built. For greenfield design, use `skills/domain-driven-design/SKILL.md`. For code-level violations (anemic model, missing DTOs, wrong layer), use `agents/domain-review.md`.
|
|
18
|
+
|
|
19
|
+
## Scope
|
|
20
|
+
|
|
21
|
+
Before starting, determine scope from the user's request:
|
|
22
|
+
|
|
23
|
+
- **Single repo**: analyze folder structure, package boundaries, shared models
|
|
24
|
+
- **Multi-repo / microservices**: analyze service boundaries, shared libraries, event contracts, API dependencies
|
|
25
|
+
|
|
26
|
+
## Evidence requirement
|
|
27
|
+
|
|
28
|
+
Every finding must be grounded in something you actually read. When reporting a God Object, a missing ACL, a coupling trap, or a friction item, cite the specific `file:line` or `file` where the evidence was observed. Do not assert that a pattern exists based on naming conventions alone — open the file and confirm it.
|
|
29
|
+
|
|
30
|
+
Classify each finding by confidence:
|
|
31
|
+
|
|
32
|
+
- **observed** — directly visible in a file you read (an import statement, a shared type, a method call)
|
|
33
|
+
- **inferred** — visible at folder or module level without reading implementation (directory name, package dependency in package.json)
|
|
34
|
+
- **suspected** — requires runtime knowledge or cannot be confirmed from static analysis alone
|
|
35
|
+
|
|
36
|
+
**Graph-assisted evidence gathering.** Prefer CodeGraph/Repowise over raw `Grep`
|
|
37
|
+
for tracing imports, call relationships, and cross-context dependencies — they're
|
|
38
|
+
cheaper and more accurate than re-deriving the call graph from text search. See
|
|
39
|
+
[`knowledge/codegraph-vs-graphify.md`](../../knowledge/codegraph-vs-graphify.md)
|
|
40
|
+
for tool selection and the fallback contract.
|
|
41
|
+
|
|
42
|
+
## Analysis Framework
|
|
43
|
+
|
|
44
|
+
### 1. Bounded Context Identification
|
|
45
|
+
|
|
46
|
+
Start here — structure reveals intent without reading implementation. Look at folder names, module names, and package boundaries first, then confirm with data schemas.
|
|
47
|
+
|
|
48
|
+
- Derive contexts from top-level folders, packages, or service names
|
|
49
|
+
- Flag **God Objects**: types that appear in multiple components under different meanings (e.g., `User` in Auth, Orders, and Billing with diverging fields) — these signal missing context boundaries
|
|
50
|
+
- Identify whether each context owns its model exclusively or borrows from neighbors
|
|
51
|
+
- A God Object is only a problem if its semantics diverge across contexts; the same name with the same meaning is fine
|
|
52
|
+
|
|
53
|
+
### 2. Context Mapping
|
|
54
|
+
|
|
55
|
+
For each inter-context relationship, classify the integration pattern. This matters because the pattern determines who can change what without coordinating with a neighbor.
|
|
56
|
+
|
|
57
|
+
| Pattern | Signal in code |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| **Anti-Corruption Layer** | Translator/mapper class at the boundary; explicit model conversion |
|
|
60
|
+
| **Shared Kernel** | Shared library or package co-owned by two contexts |
|
|
61
|
+
| **Customer/Supplier** | Downstream negotiates with upstream via contracts or versioned APIs |
|
|
62
|
+
| **Conformist** | Downstream uses upstream's model with no translation |
|
|
63
|
+
| **Open Host Service** | Published protocol (REST, gRPC, event schema) consumed by many |
|
|
64
|
+
| **Separate Ways** | No code path between two contexts that a naive reading would expect to integrate — sometimes deliberate and correct, not always a gap |
|
|
65
|
+
|
|
66
|
+
Flag missing ACLs: direct dependencies between contexts that pass domain objects across boundaries without translation. These are the highest-risk coupling points — a schema change in one context silently breaks another.
|
|
67
|
+
|
|
68
|
+
### 3. Behavioral Event Storm
|
|
69
|
+
|
|
70
|
+
Domain events are the seams that let contexts evolve independently. Missing events are missing seams.
|
|
71
|
+
|
|
72
|
+
- Identify Domain Events: past-tense named events (`OrderPlaced`, `InventoryReserved`) crossing component boundaries
|
|
73
|
+
- Trace each event: which component emits it, which consume it, and whether consumers react synchronously or asynchronously
|
|
74
|
+
- Flag events that are missing (cross-boundary state changes with no event) or implicit (direct method calls that should be events)
|
|
75
|
+
|
|
76
|
+
### 4. Value Stream Flow
|
|
77
|
+
|
|
78
|
+
Trace a single unit of value through the system. Begin from a specific entrypoint you can point to in the code (e.g., a CLI command, an HTTP handler, a message consumer) — name it explicitly. Do not construct a hypothetical flow; trace the actual one.
|
|
79
|
+
|
|
80
|
+
- Identify the happy path: ordered sequence of component handoffs from entrypoint to outcome
|
|
81
|
+
- Flag synchronous handoffs where async would decouple the components (latency and availability risk)
|
|
82
|
+
- Flag handoffs with high coupling: caller must know too much about the downstream component's internals
|
|
83
|
+
- Identify missing compensating actions for failure mid-stream (e.g., payment charged but order not created)
|
|
84
|
+
|
|
85
|
+
### 5. Coupling Trap Detection
|
|
86
|
+
|
|
87
|
+
Identify feedback loops and cascading-change risks — the architectural patterns that make every deploy a coordination exercise.
|
|
88
|
+
|
|
89
|
+
- **Circular dependencies**: Component A depends on B, B depends on A (directly or transitively)
|
|
90
|
+
- **Coupling traps**: a change to one component's domain model forces breaking changes in others — signals missing abstraction or a misplaced boundary
|
|
91
|
+
- **Shared mutable state**: two contexts writing to the same tables or caches without clear ownership
|
|
92
|
+
|
|
93
|
+
### 6. Core Domain Distillation
|
|
94
|
+
|
|
95
|
+
Where is the team's modeling effort actually going, and does that match where the value is? This is the strategic prioritization lens — it tells you where deeper design pays off and where it is waste.
|
|
96
|
+
|
|
97
|
+
Classify each bounded context:
|
|
98
|
+
|
|
99
|
+
| Class | Signal | What it means |
|
|
100
|
+
| --- | --- | --- |
|
|
101
|
+
| **Core** | Bespoke, frequently-changed business logic central to why the product exists | Invest the best design here |
|
|
102
|
+
| **Supporting** | Business-specific but not differentiating | Build simply; adequate is fine |
|
|
103
|
+
| **Generic** | Solved problems — auth, notifications, currency, scheduling, file storage | Buy/adopt; custom code here is usually waste |
|
|
104
|
+
|
|
105
|
+
Flag **effort misallocation** — the friction this lens exists to find:
|
|
106
|
+
|
|
107
|
+
- **Over-built generic**: an elaborate custom model in a Generic subdomain (a hand-rolled auth/permissions engine, a bespoke job scheduler) — candidates to replace with a library or service
|
|
108
|
+
- **Neglected Core**: the context most central to the business is the most anemic or tangled — the strongest design investment is going to the wrong place
|
|
109
|
+
- Classification is a judgment call; mark it `suspected` unless commit frequency or bespoke complexity makes it `observed`
|
|
110
|
+
|
|
111
|
+
## Steps
|
|
112
|
+
|
|
113
|
+
1. Map bounded contexts from directory structure and naming conventions
|
|
114
|
+
2. Identify God Objects spanning multiple contexts — open files to confirm semantic divergence
|
|
115
|
+
3. Chart context relationships using the integration pattern table
|
|
116
|
+
4. Locate missing ACLs by reading import statements across context boundaries
|
|
117
|
+
5. Run the event storm: list events, emitters, and consumers
|
|
118
|
+
6. Identify the value stream entrypoint in code; trace the happy path step by step
|
|
119
|
+
7. Identify coupling traps and circular dependencies
|
|
120
|
+
8. Classify each context as Core / Supporting / Generic; flag effort misallocation
|
|
121
|
+
9. Write the Friction Report
|
|
122
|
+
|
|
123
|
+
## Output
|
|
124
|
+
|
|
125
|
+
### Bounded Contexts
|
|
126
|
+
|
|
127
|
+
Table: context name, owning file/package, primary aggregate or concern, upstream/downstream relationships.
|
|
128
|
+
|
|
129
|
+
### God Objects
|
|
130
|
+
|
|
131
|
+
List each: type name, contexts it appears in, diverging semantics, evidence (`file:line`). Omit types that appear in multiple places with consistent meaning.
|
|
132
|
+
|
|
133
|
+
### Context Map
|
|
134
|
+
|
|
135
|
+
Table of context relationships and their integration patterns. Flag missing ACLs with ⚠ and cite the import or call that crosses the boundary without translation.
|
|
136
|
+
|
|
137
|
+
### Domain Event Inventory
|
|
138
|
+
|
|
139
|
+
Table: event name, emitting context, consuming contexts, sync/async. If no domain events exist, say so explicitly — do not omit the section.
|
|
140
|
+
|
|
141
|
+
### Value Stream
|
|
142
|
+
|
|
143
|
+
State the entrypoint (file and function/command). Then list the ordered handoffs with coupling severity (low / medium / high) and confidence tier.
|
|
144
|
+
|
|
145
|
+
### Subdomain Classification
|
|
146
|
+
|
|
147
|
+
Table: context name, class (Core / Supporting / Generic), evidence for the class, confidence tier. Add a one-line Domain Vision for the context judged Core. Flag any over-built Generic or neglected Core as a Friction Report item with the `effort-misallocation` category.
|
|
148
|
+
|
|
149
|
+
### Friction Report
|
|
150
|
+
|
|
151
|
+
Each item: category tag, specific files/components involved, confidence tier, and a concrete fix direction. Use this format:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
[category] file-a → file-b (confidence: observed)
|
|
155
|
+
Description of the coupling or gap.
|
|
156
|
+
Fix: <specific action, e.g., "introduce ACL", "extract context", "replace sync call with domain event">
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Categories: `deployment-coupling` | `data-coupling` | `semantic-coupling` | `event-gap` | `effort-misallocation`
|
|
160
|
+
|
|
161
|
+
**Example:**
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
[semantic-coupling] output.ts → enricher.ts (confidence: observed, output.ts:3)
|
|
165
|
+
output.ts imports classifyDDD() from enricher.ts — business logic that runs at render time
|
|
166
|
+
belongs in the enrichment phase. This creates a reverse dependency: Output depends on
|
|
167
|
+
Enrichment internals.
|
|
168
|
+
Fix: run classifyDDD during enrichment and store results on contextMap.dddInsights;
|
|
169
|
+
output.ts reads the pre-computed field.
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Constraints
|
|
173
|
+
|
|
174
|
+
- Do not redesign. Describe what exists; note what is missing.
|
|
175
|
+
- Do not flag code-level violations — those belong to `agents/domain-review.md`
|
|
176
|
+
- Scope coupling trap findings to cross-context boundaries; intra-context coupling is out of scope
|
|
177
|
+
- **Do not reframe infrastructure as a domain.** CI/CD stages, Terraform modules, deploy scripts, and Makefiles are not bounded contexts or aggregates. If no application logic exists, the skip applies regardless of how the concern layers are labeled.
|
|
178
|
+
|
|
179
|
+
## Guidelines
|
|
180
|
+
|
|
181
|
+
- Start with folder/package structure before reading any code — structure reveals intended boundaries
|
|
182
|
+
- Friction Report items must cite the specific file (and line if possible) where the coupling is observable
|
|
183
|
+
- If the system has no domain model (pure infrastructure, scripts, configs, build tools), return a brief note — two to three sentences — explaining that and skip the full report. Do not produce an "operational domain" or "infrastructure domain" analysis in its place.
|