@ahmed-g-gad/apothem 0.1.1
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/CHANGELOG.md +60 -0
- package/LICENSE +21 -0
- package/LICENSES/MIT.txt +18 -0
- package/LICENSES/PSF-2.0.txt +47 -0
- package/README.md +549 -0
- package/bin/README.md +37 -0
- package/bin/apothem.mjs +78 -0
- package/package.json +75 -0
- package/pyproject.toml +347 -0
- package/src/apothem/README.md +52 -0
- package/src/apothem/__init__.py +66 -0
- package/src/apothem/__main__.py +28 -0
- package/src/apothem/_vendor/.keep +0 -0
- package/src/apothem/_vendor/__init__.py +25 -0
- package/src/apothem/_vendor/attr/__init__.py +104 -0
- package/src/apothem/_vendor/attr/__init__.pyi +389 -0
- package/src/apothem/_vendor/attr/_cmp.py +160 -0
- package/src/apothem/_vendor/attr/_cmp.pyi +13 -0
- package/src/apothem/_vendor/attr/_compat.py +99 -0
- package/src/apothem/_vendor/attr/_config.py +31 -0
- package/src/apothem/_vendor/attr/_funcs.py +497 -0
- package/src/apothem/_vendor/attr/_make.py +3406 -0
- package/src/apothem/_vendor/attr/_next_gen.py +674 -0
- package/src/apothem/_vendor/attr/_typing_compat.pyi +15 -0
- package/src/apothem/_vendor/attr/_version_info.py +89 -0
- package/src/apothem/_vendor/attr/_version_info.pyi +9 -0
- package/src/apothem/_vendor/attr/converters.py +162 -0
- package/src/apothem/_vendor/attr/converters.pyi +19 -0
- package/src/apothem/_vendor/attr/exceptions.py +95 -0
- package/src/apothem/_vendor/attr/exceptions.pyi +17 -0
- package/src/apothem/_vendor/attr/filters.py +72 -0
- package/src/apothem/_vendor/attr/filters.pyi +6 -0
- package/src/apothem/_vendor/attr/py.typed +0 -0
- package/src/apothem/_vendor/attr/setters.py +79 -0
- package/src/apothem/_vendor/attr/setters.pyi +20 -0
- package/src/apothem/_vendor/attr/validators.py +750 -0
- package/src/apothem/_vendor/attr/validators.pyi +140 -0
- package/src/apothem/_vendor/attr.LICENSE +21 -0
- package/src/apothem/_vendor/attrs/__init__.py +72 -0
- package/src/apothem/_vendor/attrs/__init__.pyi +314 -0
- package/src/apothem/_vendor/attrs/converters.py +3 -0
- package/src/apothem/_vendor/attrs/exceptions.py +3 -0
- package/src/apothem/_vendor/attrs/filters.py +3 -0
- package/src/apothem/_vendor/attrs/py.typed +0 -0
- package/src/apothem/_vendor/attrs/setters.py +3 -0
- package/src/apothem/_vendor/attrs/validators.py +3 -0
- package/src/apothem/_vendor/attrs.LICENSE +21 -0
- package/src/apothem/_vendor/jsonschema/__init__.py +120 -0
- package/src/apothem/_vendor/jsonschema/__main__.py +6 -0
- package/src/apothem/_vendor/jsonschema/_format.py +546 -0
- package/src/apothem/_vendor/jsonschema/_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_legacy_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_types.py +204 -0
- package/src/apothem/_vendor/jsonschema/_typing.py +29 -0
- package/src/apothem/_vendor/jsonschema/_utils.py +355 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/__init__.py +5 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/const_vs_enum.py +30 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/contains.py +28 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/import_benchmark.py +31 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232/issue.json +2653 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232.py +25 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/nested_schemas.py +56 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/subcomponents.py +42 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/unused_registry.py +35 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_keywords.py +32 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/validator_creation.py +14 -0
- package/src/apothem/_vendor/jsonschema/cli.py +292 -0
- package/src/apothem/_vendor/jsonschema/exceptions.py +490 -0
- package/src/apothem/_vendor/jsonschema/protocols.py +230 -0
- package/src/apothem/_vendor/jsonschema/validators.py +1410 -0
- package/src/apothem/_vendor/jsonschema.LICENSE +19 -0
- package/src/apothem/_vendor/jsonschema_specifications/__init__.py +12 -0
- package/src/apothem/_vendor/jsonschema_specifications/_core.py +38 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
- package/src/apothem/_vendor/jsonschema_specifications.LICENSE +19 -0
- package/src/apothem/_vendor/referencing/__init__.py +7 -0
- package/src/apothem/_vendor/referencing/_attrs.py +31 -0
- package/src/apothem/_vendor/referencing/_attrs.pyi +21 -0
- package/src/apothem/_vendor/referencing/_core.py +739 -0
- package/src/apothem/_vendor/referencing/exceptions.py +165 -0
- package/src/apothem/_vendor/referencing/jsonschema.py +642 -0
- package/src/apothem/_vendor/referencing/py.typed +0 -0
- package/src/apothem/_vendor/referencing/retrieval.py +94 -0
- package/src/apothem/_vendor/referencing/typing.py +61 -0
- package/src/apothem/_vendor/referencing.LICENSE +19 -0
- package/src/apothem/_vendor/rpds/__init__.py +251 -0
- package/src/apothem/_vendor/typing_extensions.LICENSE +279 -0
- package/src/apothem/_vendor/typing_extensions.py +4317 -0
- package/src/apothem/_vendor/vendor.txt +22 -0
- package/src/apothem/_vendor/yaml/__init__.py +389 -0
- package/src/apothem/_vendor/yaml/composer.py +138 -0
- package/src/apothem/_vendor/yaml/constructor.py +748 -0
- package/src/apothem/_vendor/yaml/cyaml.py +100 -0
- package/src/apothem/_vendor/yaml/dumper.py +61 -0
- package/src/apothem/_vendor/yaml/emitter.py +1137 -0
- package/src/apothem/_vendor/yaml/error.py +74 -0
- package/src/apothem/_vendor/yaml/events.py +85 -0
- package/src/apothem/_vendor/yaml/loader.py +63 -0
- package/src/apothem/_vendor/yaml/nodes.py +48 -0
- package/src/apothem/_vendor/yaml/parser.py +588 -0
- package/src/apothem/_vendor/yaml/reader.py +185 -0
- package/src/apothem/_vendor/yaml/representer.py +388 -0
- package/src/apothem/_vendor/yaml/resolver.py +226 -0
- package/src/apothem/_vendor/yaml/scanner.py +1435 -0
- package/src/apothem/_vendor/yaml/serializer.py +110 -0
- package/src/apothem/_vendor/yaml/tokens.py +103 -0
- package/src/apothem/_vendor/yaml.LICENSE +20 -0
- package/src/apothem/agents/README.md +60 -0
- package/src/apothem/agents/codebase-explorer.md +91 -0
- package/src/apothem/agents/convention-auditor.md +93 -0
- package/src/apothem/agents/dependency-auditor.md +97 -0
- package/src/apothem/agents/fact-checker.md +84 -0
- package/src/apothem/agents/mcp-builder.md +86 -0
- package/src/apothem/agents/memory-auditor.md +93 -0
- package/src/apothem/agents/prompt-evaluator.md +87 -0
- package/src/apothem/agents/quality-gate.md +103 -0
- package/src/apothem/agents/refactor-surgeon.md +74 -0
- package/src/apothem/agents/research-scout.md +73 -0
- package/src/apothem/agents/security-scanner.md +83 -0
- package/src/apothem/agents/test-runner.md +84 -0
- package/src/apothem/audit/README.md +73 -0
- package/src/apothem/audit/_scan_lib.py +182 -0
- package/src/apothem/audit/analyze_graph.py +260 -0
- package/src/apothem/audit/build_capability_graph.py +607 -0
- package/src/apothem/audit/build_inventory.py +657 -0
- package/src/apothem/audit/build_plans_provenance.py +997 -0
- package/src/apothem/audit/check_links.py +389 -0
- package/src/apothem/audit/classify_artifacts.py +381 -0
- package/src/apothem/audit/deprecated-tokens.txt +10 -0
- package/src/apothem/audit/execute_plans_migration.py +491 -0
- package/src/apothem/audit/known-projects.txt +15 -0
- package/src/apothem/audit/render_capability_index.py +467 -0
- package/src/apothem/audit/render_inventory.py +405 -0
- package/src/apothem/audit/scan_ai_surfaces.py +1125 -0
- package/src/apothem/audit/scan_ai_surfaces_coarse.py +261 -0
- package/src/apothem/audit/scan_drift_features.py +143 -0
- package/src/apothem/audit/scan_frontmatter.py +293 -0
- package/src/apothem/audit/scan_header_coverage.py +1134 -0
- package/src/apothem/audit/scan_plan_leakage.py +540 -0
- package/src/apothem/audit/scan_plans_discipline.py +188 -0
- package/src/apothem/audit/scan_secrets_pii.py +245 -0
- package/src/apothem/audit/scan_stale_tokens.py +296 -0
- package/src/apothem/audit/synthesize_drift.py +205 -0
- package/src/apothem/benchmarks/README.md +33 -0
- package/src/apothem/benchmarks/__init__.py +3 -0
- package/src/apothem/benchmarks/bench_agents.py +63 -0
- package/src/apothem/benchmarks/bench_hooks.py +93 -0
- package/src/apothem/benchmarks/bench_install.py +58 -0
- package/src/apothem/benchmarks/bench_tests.py +93 -0
- package/src/apothem/benchmarks/bench_validate_ecosystem.py +84 -0
- package/src/apothem/cli/README.md +33 -0
- package/src/apothem/cli/__init__.py +229 -0
- package/src/apothem/cli/_cmd_completion.py +88 -0
- package/src/apothem/cli/_cmd_diff.py +181 -0
- package/src/apothem/cli/_cmd_doctor.py +143 -0
- package/src/apothem/cli/_cmd_harnesses.py +167 -0
- package/src/apothem/cli/_cmd_install.py +327 -0
- package/src/apothem/cli/_cmd_migrate_workspace.py +143 -0
- package/src/apothem/cli/_cmd_profile.py +341 -0
- package/src/apothem/cli/_cmd_status.py +180 -0
- package/src/apothem/cli/_cmd_uninstall.py +215 -0
- package/src/apothem/cli/_cmd_update.py +397 -0
- package/src/apothem/cli/_cmd_verify.py +194 -0
- package/src/apothem/cli/_common_flags.py +90 -0
- package/src/apothem/cli/_epilogs.py +296 -0
- package/src/apothem/cli/_helpers.py +857 -0
- package/src/apothem/cli/_json_formatter.py +21 -0
- package/src/apothem/cli/_materialize.py +376 -0
- package/src/apothem/cli/completions/apothem.bash +30 -0
- package/src/apothem/cli/completions/apothem.fish +19 -0
- package/src/apothem/cli/completions/apothem.ps1 +27 -0
- package/src/apothem/cli/completions/apothem.zsh +42 -0
- package/src/apothem/cli/reference_export.py +126 -0
- package/src/apothem/commands/README.md +125 -0
- package/src/apothem/commands/a11y-audit.md +203 -0
- package/src/apothem/commands/architecture-review.md +194 -0
- package/src/apothem/commands/audit.md +165 -0
- package/src/apothem/commands/code-audit.md +218 -0
- package/src/apothem/commands/code-review.md +193 -0
- package/src/apothem/commands/dependency-audit.md +209 -0
- package/src/apothem/commands/docs-review.md +199 -0
- package/src/apothem/commands/elevate.md +285 -0
- package/src/apothem/commands/eval.md +149 -0
- package/src/apothem/commands/fortress.md +172 -0
- package/src/apothem/commands/freshify.md +168 -0
- package/src/apothem/commands/github-deploy-fresh.md +178 -0
- package/src/apothem/commands/github-deploy-next.md +167 -0
- package/src/apothem/commands/perf-audit.md +198 -0
- package/src/apothem/commands/plan-amend.md +104 -0
- package/src/apothem/commands/plan-audit.md +127 -0
- package/src/apothem/commands/plan-design.md +257 -0
- package/src/apothem/commands/plan-execute.md +495 -0
- package/src/apothem/commands/plan-generate.md +351 -0
- package/src/apothem/commands/plan-review.md +555 -0
- package/src/apothem/commands/plan-spec.md +359 -0
- package/src/apothem/commands/plan-status.md +222 -0
- package/src/apothem/commands/plan.md +173 -0
- package/src/apothem/commands/projectify.md +142 -0
- package/src/apothem/commands/release-readiness.md +142 -0
- package/src/apothem/commands/research-analysis.md +241 -0
- package/src/apothem/commands/research-design.md +231 -0
- package/src/apothem/commands/research-disseminate.md +225 -0
- package/src/apothem/commands/research-experiment.md +232 -0
- package/src/apothem/commands/research-ideate.md +213 -0
- package/src/apothem/commands/research-paper.md +252 -0
- package/src/apothem/commands/research-proposal.md +220 -0
- package/src/apothem/commands/research-publish.md +255 -0
- package/src/apothem/commands/research-review.md +251 -0
- package/src/apothem/commands/research-sources.md +266 -0
- package/src/apothem/commands/research-spec.md +255 -0
- package/src/apothem/commands/research-synthesis.md +233 -0
- package/src/apothem/commands/research-theory.md +218 -0
- package/src/apothem/commands/research.md +181 -0
- package/src/apothem/commands/security-audit.md +196 -0
- package/src/apothem/commands/supply-chain-audit.md +192 -0
- package/src/apothem/commands/test-suite.md +146 -0
- package/src/apothem/commands/threat-model-audit.md +199 -0
- package/src/apothem/commands/ux-review.md +202 -0
- package/src/apothem/commands/workflow.md +162 -0
- package/src/apothem/conformity/README.md +173 -0
- package/src/apothem/conformity/__init__.py +1 -0
- package/src/apothem/conformity/_grep_base.py +93 -0
- package/src/apothem/conformity/agent_capability_grep.py +306 -0
- package/src/apothem/conformity/agents_md_coverage_grep.py +382 -0
- package/src/apothem/conformity/agnosticism_grep.py +311 -0
- package/src/apothem/conformity/always_on_budget_grep.py +318 -0
- package/src/apothem/conformity/bare_except_grep.py +115 -0
- package/src/apothem/conformity/binding_reciprocity_grep.py +151 -0
- package/src/apothem/conformity/brand_mark_grep.py +272 -0
- package/src/apothem/conformity/commented_out_code_grep.py +176 -0
- package/src/apothem/conformity/completion_claim_grep.py +169 -0
- package/src/apothem/conformity/conventional_commit_grep.py +319 -0
- package/src/apothem/conformity/copilot_instructions_presence_grep.py +324 -0
- package/src/apothem/conformity/cross_platform_matrix_grep.py +297 -0
- package/src/apothem/conformity/determinism_grep.py +306 -0
- package/src/apothem/conformity/diagram_staleness_grep.py +154 -0
- package/src/apothem/conformity/dynamism_grep.py +284 -0
- package/src/apothem/conformity/editorconfig_presence_grep.py +281 -0
- package/src/apothem/conformity/file_header_grep.py +502 -0
- package/src/apothem/conformity/freshness_token_grep.py +233 -0
- package/src/apothem/conformity/frontmatter_grep.py +274 -0
- package/src/apothem/conformity/frontmatter_value_grep.py +386 -0
- package/src/apothem/conformity/gate.py +1386 -0
- package/src/apothem/conformity/gitattributes_presence_grep.py +238 -0
- package/src/apothem/conformity/harden_runner_grep.py +320 -0
- package/src/apothem/conformity/hedging_grep.py +129 -0
- package/src/apothem/conformity/license_author_consistency_grep.py +204 -0
- package/src/apothem/conformity/link_check.py +327 -0
- package/src/apothem/conformity/magic_number_grep.py +182 -0
- package/src/apothem/conformity/multi_surface_coherence_grep.py +620 -0
- package/src/apothem/conformity/naming_grep.py +224 -0
- package/src/apothem/conformity/no_global_plans_grep.py +339 -0
- package/src/apothem/conformity/no_toplevel_docs_grep.py +120 -0
- package/src/apothem/conformity/oidc_trusted_publishing_grep.py +291 -0
- package/src/apothem/conformity/option_annotation_grep.py +352 -0
- package/src/apothem/conformity/orphan_output_grep.py +206 -0
- package/src/apothem/conformity/permissions_minimum_scope_grep.py +299 -0
- package/src/apothem/conformity/plain_language_grep.py +559 -0
- package/src/apothem/conformity/plan_next_step_consistency_grep.py +450 -0
- package/src/apothem/conformity/plan_suite_structure_grep.py +534 -0
- package/src/apothem/conformity/plans_discipline_language_grep.py +245 -0
- package/src/apothem/conformity/production_ready_pr_grep.py +200 -0
- package/src/apothem/conformity/recommend_next_step_grep.py +250 -0
- package/src/apothem/conformity/redundancy_grep.py +401 -0
- package/src/apothem/conformity/reference_token_grep.py +230 -0
- package/src/apothem/conformity/registry_capability_consistency_grep.py +368 -0
- package/src/apothem/conformity/secret_leak_grep.py +193 -0
- package/src/apothem/conformity/semver_stability_grep.py +358 -0
- package/src/apothem/conformity/smoke_install_grep.py +194 -0
- package/src/apothem/conformity/static_version_grep.py +284 -0
- package/src/apothem/conformity/token_efficiency_grep.py +185 -0
- package/src/apothem/conformity/unpinned_action_grep.py +115 -0
- package/src/apothem/conformity/user_confirm_grep.py +74 -0
- package/src/apothem/conformity/workflow_concurrency_grep.py +283 -0
- package/src/apothem/harnesses/README.md +63 -0
- package/src/apothem/harnesses/__init__.py +16 -0
- package/src/apothem/harnesses/_shared/README.md +36 -0
- package/src/apothem/harnesses/_shared/__init__.py +12 -0
- package/src/apothem/harnesses/_shared/install_driver.py +281 -0
- package/src/apothem/harnesses/_shared/install_driver_apply.py +612 -0
- package/src/apothem/harnesses/_shared/install_driver_backup.py +535 -0
- package/src/apothem/harnesses/_shared/install_driver_converters.py +310 -0
- package/src/apothem/harnesses/_shared/install_driver_lifecycle.py +495 -0
- package/src/apothem/harnesses/_shared/install_driver_materialize.py +675 -0
- package/src/apothem/harnesses/_shared/install_driver_merge.py +656 -0
- package/src/apothem/harnesses/_shared/install_driver_pathsafety.py +137 -0
- package/src/apothem/harnesses/_shared/install_driver_planvalidation.py +240 -0
- package/src/apothem/harnesses/_shared/install_driver_removal.py +366 -0
- package/src/apothem/harnesses/_shared/install_driver_treeops.py +248 -0
- package/src/apothem/harnesses/_shared/install_driver_types.py +330 -0
- package/src/apothem/harnesses/_shared/wrapper_factories.py +448 -0
- package/src/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/antigravity/__init__.py +70 -0
- package/src/apothem/harnesses/antigravity/capabilities.yml +40 -0
- package/src/apothem/harnesses/antigravity/install.py +63 -0
- package/src/apothem/harnesses/antigravity/templates/GEMINI.md +40 -0
- package/src/apothem/harnesses/antigravity/templates/plugin.json +5 -0
- package/src/apothem/harnesses/antigravity/uninstall.py +22 -0
- package/src/apothem/harnesses/antigravity/update.py +10 -0
- package/src/apothem/harnesses/antigravity/verify.py +11 -0
- package/src/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md +65 -0
- package/src/apothem/harnesses/claude_code/__init__.py +107 -0
- package/src/apothem/harnesses/claude_code/capabilities.yml +42 -0
- package/src/apothem/harnesses/claude_code/install.py +147 -0
- package/src/apothem/harnesses/claude_code/templates/settings.json +351 -0
- package/src/apothem/harnesses/claude_code/uninstall.py +23 -0
- package/src/apothem/harnesses/claude_code/update.py +10 -0
- package/src/apothem/harnesses/claude_code/verify.py +11 -0
- package/src/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md +74 -0
- package/src/apothem/harnesses/codebuddy/__init__.py +49 -0
- package/src/apothem/harnesses/codebuddy/capabilities.yml +34 -0
- package/src/apothem/harnesses/codebuddy/install.py +40 -0
- package/src/apothem/harnesses/codebuddy/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/codebuddy/uninstall.py +25 -0
- package/src/apothem/harnesses/codebuddy/update.py +10 -0
- package/src/apothem/harnesses/codebuddy/verify.py +11 -0
- package/src/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/codex/__init__.py +72 -0
- package/src/apothem/harnesses/codex/capabilities.yml +40 -0
- package/src/apothem/harnesses/codex/install.py +69 -0
- package/src/apothem/harnesses/codex/templates/AGENTS.md +40 -0
- package/src/apothem/harnesses/codex/templates/hooks.json +127 -0
- package/src/apothem/harnesses/codex/uninstall.py +23 -0
- package/src/apothem/harnesses/codex/update.py +10 -0
- package/src/apothem/harnesses/codex/verify.py +11 -0
- package/src/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/cursor/__init__.py +48 -0
- package/src/apothem/harnesses/cursor/capabilities.yml +42 -0
- package/src/apothem/harnesses/cursor/install.py +38 -0
- package/src/apothem/harnesses/cursor/templates/apothem-rules.mdc +40 -0
- package/src/apothem/harnesses/cursor/uninstall.py +25 -0
- package/src/apothem/harnesses/cursor/update.py +10 -0
- package/src/apothem/harnesses/cursor/verify.py +11 -0
- package/src/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md +102 -0
- package/src/apothem/harnesses/gemini_cli/__init__.py +52 -0
- package/src/apothem/harnesses/gemini_cli/capabilities.yml +43 -0
- package/src/apothem/harnesses/gemini_cli/install.py +43 -0
- package/src/apothem/harnesses/gemini_cli/templates/GEMINI.md +38 -0
- package/src/apothem/harnesses/gemini_cli/uninstall.py +25 -0
- package/src/apothem/harnesses/gemini_cli/update.py +10 -0
- package/src/apothem/harnesses/gemini_cli/verify.py +11 -0
- package/src/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md +84 -0
- package/src/apothem/harnesses/github_copilot/__init__.py +47 -0
- package/src/apothem/harnesses/github_copilot/capabilities.yml +42 -0
- package/src/apothem/harnesses/github_copilot/install.py +40 -0
- package/src/apothem/harnesses/github_copilot/templates/copilot-instructions.md +33 -0
- package/src/apothem/harnesses/github_copilot/uninstall.py +25 -0
- package/src/apothem/harnesses/github_copilot/update.py +10 -0
- package/src/apothem/harnesses/github_copilot/verify.py +11 -0
- package/src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/glm/__init__.py +56 -0
- package/src/apothem/harnesses/glm/capabilities.yml +33 -0
- package/src/apothem/harnesses/glm/install.py +45 -0
- package/src/apothem/harnesses/glm/templates/glm.toml +58 -0
- package/src/apothem/harnesses/glm/uninstall.py +25 -0
- package/src/apothem/harnesses/glm/update.py +10 -0
- package/src/apothem/harnesses/glm/verify.py +11 -0
- package/src/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md +57 -0
- package/src/apothem/harnesses/hermes/__init__.py +33 -0
- package/src/apothem/harnesses/hermes/capabilities.yml +36 -0
- package/src/apothem/harnesses/hermes/install.py +17 -0
- package/src/apothem/harnesses/hermes/materializer.py +35 -0
- package/src/apothem/harnesses/hermes/uninstall.py +33 -0
- package/src/apothem/harnesses/hermes/update.py +10 -0
- package/src/apothem/harnesses/hermes/verify.py +11 -0
- package/src/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md +128 -0
- package/src/apothem/harnesses/kimi_code/__init__.py +59 -0
- package/src/apothem/harnesses/kimi_code/capabilities.yml +40 -0
- package/src/apothem/harnesses/kimi_code/install.py +42 -0
- package/src/apothem/harnesses/kimi_code/templates/AGENTS.md +43 -0
- package/src/apothem/harnesses/kimi_code/uninstall.py +27 -0
- package/src/apothem/harnesses/kimi_code/update.py +10 -0
- package/src/apothem/harnesses/kimi_code/verify.py +11 -0
- package/src/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/kiro/__init__.py +49 -0
- package/src/apothem/harnesses/kiro/capabilities.yml +36 -0
- package/src/apothem/harnesses/kiro/install.py +39 -0
- package/src/apothem/harnesses/kiro/templates/apothem-rules.md +36 -0
- package/src/apothem/harnesses/kiro/uninstall.py +25 -0
- package/src/apothem/harnesses/kiro/update.py +10 -0
- package/src/apothem/harnesses/kiro/verify.py +11 -0
- package/src/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md +62 -0
- package/src/apothem/harnesses/open_claw/__init__.py +35 -0
- package/src/apothem/harnesses/open_claw/capabilities.yml +35 -0
- package/src/apothem/harnesses/open_claw/install.py +17 -0
- package/src/apothem/harnesses/open_claw/materializer.py +36 -0
- package/src/apothem/harnesses/open_claw/uninstall.py +32 -0
- package/src/apothem/harnesses/open_claw/update.py +10 -0
- package/src/apothem/harnesses/open_claw/verify.py +11 -0
- package/src/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md +76 -0
- package/src/apothem/harnesses/opencode/__init__.py +35 -0
- package/src/apothem/harnesses/opencode/capabilities.yml +43 -0
- package/src/apothem/harnesses/opencode/install.py +17 -0
- package/src/apothem/harnesses/opencode/materializer.py +31 -0
- package/src/apothem/harnesses/opencode/uninstall.py +34 -0
- package/src/apothem/harnesses/opencode/update.py +10 -0
- package/src/apothem/harnesses/opencode/verify.py +11 -0
- package/src/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md +87 -0
- package/src/apothem/harnesses/qwen_code/__init__.py +37 -0
- package/src/apothem/harnesses/qwen_code/capabilities.yml +43 -0
- package/src/apothem/harnesses/qwen_code/install.py +19 -0
- package/src/apothem/harnesses/qwen_code/materializer.py +174 -0
- package/src/apothem/harnesses/qwen_code/templates/QWEN.md +30 -0
- package/src/apothem/harnesses/qwen_code/uninstall.py +34 -0
- package/src/apothem/harnesses/qwen_code/update.py +10 -0
- package/src/apothem/harnesses/qwen_code/verify.py +11 -0
- package/src/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md +70 -0
- package/src/apothem/harnesses/trae/__init__.py +49 -0
- package/src/apothem/harnesses/trae/capabilities.yml +34 -0
- package/src/apothem/harnesses/trae/install.py +38 -0
- package/src/apothem/harnesses/trae/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/trae/uninstall.py +25 -0
- package/src/apothem/harnesses/trae/update.py +10 -0
- package/src/apothem/harnesses/trae/verify.py +11 -0
- package/src/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/windsurf/__init__.py +52 -0
- package/src/apothem/harnesses/windsurf/capabilities.yml +40 -0
- package/src/apothem/harnesses/windsurf/install.py +41 -0
- package/src/apothem/harnesses/windsurf/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/windsurf/uninstall.py +25 -0
- package/src/apothem/harnesses/windsurf/update.py +10 -0
- package/src/apothem/harnesses/windsurf/verify.py +11 -0
- package/src/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md +92 -0
- package/src/apothem/harnesses/zed/__init__.py +57 -0
- package/src/apothem/harnesses/zed/capabilities.yml +38 -0
- package/src/apothem/harnesses/zed/install.py +41 -0
- package/src/apothem/harnesses/zed/templates/apothem-rules.md +32 -0
- package/src/apothem/harnesses/zed/uninstall.py +28 -0
- package/src/apothem/harnesses/zed/update.py +10 -0
- package/src/apothem/harnesses/zed/verify.py +11 -0
- package/src/apothem/hooks/README.md +81 -0
- package/src/apothem/hooks/__init__.py +24 -0
- package/src/apothem/hooks/askuserquestion_validator.py +380 -0
- package/src/apothem/hooks/dispatch.py +296 -0
- package/src/apothem/hooks/emit_hook_context.py +444 -0
- package/src/apothem/hooks/hooks.json +318 -0
- package/src/apothem/hooks/lib/README.md +39 -0
- package/src/apothem/hooks/lib/__init__.py +18 -0
- package/src/apothem/hooks/lib/bootstrap.ps1 +129 -0
- package/src/apothem/hooks/lib/bootstrap.sh +103 -0
- package/src/apothem/hooks/lib/events.py +51 -0
- package/src/apothem/hooks/lib/find-pwsh.ps1 +78 -0
- package/src/apothem/hooks/lib/find-pwsh.sh +76 -0
- package/src/apothem/hooks/lib/find-python.ps1 +63 -0
- package/src/apothem/hooks/lib/find-python.sh +97 -0
- package/src/apothem/hooks/lib/log.py +43 -0
- package/src/apothem/hooks/lib/resolve_root.py +264 -0
- package/src/apothem/hooks/messages/postcompact.md +14 -0
- package/src/apothem/hooks/messages/posttooluse-proactive-compaction.md +46 -0
- package/src/apothem/hooks/messages/precompact.md +14 -0
- package/src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md +65 -0
- package/src/apothem/hooks/messages/pretooluse-bash-plan-guard.md +97 -0
- package/src/apothem/hooks/messages/pretooluse-bash.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-conformity.md +70 -0
- package/src/apothem/hooks/messages/pretooluse-dependency-guard.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-edit-header-guard.md +61 -0
- package/src/apothem/hooks/messages/pretooluse-edit.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-eval-guard.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-notebookedit.md +11 -0
- package/src/apothem/hooks/messages/pretooluse-write-header-guard.md +45 -0
- package/src/apothem/hooks/messages/pretooluse-write-plan-guard.md +72 -0
- package/src/apothem/hooks/messages/pretooluse-write.md +21 -0
- package/src/apothem/hooks/messages/sessionstart.md +15 -0
- package/src/apothem/hooks/messages/stop.md +27 -0
- package/src/apothem/hooks/proactive_compaction_tracker.py +327 -0
- package/src/apothem/hooks/session_start_bootstrap.py +472 -0
- package/src/apothem/lib/README.md +42 -0
- package/src/apothem/lib/__init__.py +13 -0
- package/src/apothem/lib/atomic_io.py +189 -0
- package/src/apothem/lib/auditor.py +687 -0
- package/src/apothem/lib/clean_slate.py +396 -0
- package/src/apothem/lib/contexts.py +352 -0
- package/src/apothem/lib/data_home.py +255 -0
- package/src/apothem/lib/frontmatter.py +101 -0
- package/src/apothem/lib/harness_materializer.py +213 -0
- package/src/apothem/lib/harness_protocol.py +59 -0
- package/src/apothem/lib/harness_registry.py +282 -0
- package/src/apothem/lib/harness_registry_data.py +843 -0
- package/src/apothem/lib/install_ledger.py +347 -0
- package/src/apothem/lib/learning.py +540 -0
- package/src/apothem/lib/memory.py +347 -0
- package/src/apothem/lib/parallel_sweep.py +234 -0
- package/src/apothem/lib/plan_tiers.py +200 -0
- package/src/apothem/lib/plugin_bootstrap.py +132 -0
- package/src/apothem/lib/plugin_tree.py +599 -0
- package/src/apothem/lib/profile.py +755 -0
- package/src/apothem/lib/profile_projection.py +198 -0
- package/src/apothem/lib/propagation-manifest.yaml +878 -0
- package/src/apothem/lib/propagation.py +220 -0
- package/src/apothem/lib/python_resolver.py +189 -0
- package/src/apothem/lib/reporter.py +62 -0
- package/src/apothem/lib/workspace_migration.py +323 -0
- package/src/apothem/output-styles/README.md +41 -0
- package/src/apothem/output-styles/concise-engineer.md +49 -0
- package/src/apothem/output-styles/default-architect.md +52 -0
- package/src/apothem/output-styles/default.md +113 -0
- package/src/apothem/output-styles/forensic-auditor.md +63 -0
- package/src/apothem/py.typed +0 -0
- package/src/apothem/rules/README.md +121 -0
- package/src/apothem/rules/agent-capability-discipline-matrix.md +89 -0
- package/src/apothem/rules/agent-capability-discipline.md +78 -0
- package/src/apothem/rules/agent-orchestration-patterns.md +144 -0
- package/src/apothem/rules/agent-orchestration.md +65 -0
- package/src/apothem/rules/agents-md-convention.md +86 -0
- package/src/apothem/rules/agile-sprints-elements.md +135 -0
- package/src/apothem/rules/agile-sprints.md +64 -0
- package/src/apothem/rules/agnostic-posture-checklist.md +47 -0
- package/src/apothem/rules/agnostic-posture.md +48 -0
- package/src/apothem/rules/authoritative-referencing-quotation.md +50 -0
- package/src/apothem/rules/authoritative-referencing.md +66 -0
- package/src/apothem/rules/authority-inquiry-categories.md +58 -0
- package/src/apothem/rules/authority-inquiry.md +54 -0
- package/src/apothem/rules/auto-memory-topic-files.md +86 -0
- package/src/apothem/rules/auto-memory.md +67 -0
- package/src/apothem/rules/bidirectional-binding.md +123 -0
- package/src/apothem/rules/canonical-layout-reporting-tiers.md +212 -0
- package/src/apothem/rules/canonical-layout.md +60 -0
- package/src/apothem/rules/clean-architecture-layers.md +186 -0
- package/src/apothem/rules/clean-room-generation-protocols.md +124 -0
- package/src/apothem/rules/clean-room-generation.md +59 -0
- package/src/apothem/rules/code-craft-conventions.md +101 -0
- package/src/apothem/rules/code-craft-markdown.md +138 -0
- package/src/apothem/rules/code-craft-python.md +154 -0
- package/src/apothem/rules/code-craft-shell.md +192 -0
- package/src/apothem/rules/cognitive-identity-techniques.md +180 -0
- package/src/apothem/rules/cognitive-identity.md +81 -0
- package/src/apothem/rules/context-management-budget.md +46 -0
- package/src/apothem/rules/context-management-protocol.md +161 -0
- package/src/apothem/rules/context-management-scratch.md +128 -0
- package/src/apothem/rules/context-management.md +85 -0
- package/src/apothem/rules/definitiveness-virtues.md +67 -0
- package/src/apothem/rules/definitiveness.md +58 -0
- package/src/apothem/rules/determinism.md +81 -0
- package/src/apothem/rules/disclosure-ledger-markers.md +58 -0
- package/src/apothem/rules/disclosure-ledger.md +52 -0
- package/src/apothem/rules/dynamism.md +38 -0
- package/src/apothem/rules/etc-extension.md +57 -0
- package/src/apothem/rules/expertise-posture-elements.md +68 -0
- package/src/apothem/rules/expertise-posture.md +54 -0
- package/src/apothem/rules/freshness-facade.md +64 -0
- package/src/apothem/rules/harness-adapter-shape-schemas.md +162 -0
- package/src/apothem/rules/harness-adapter-shape.md +42 -0
- package/src/apothem/rules/host-discovery-manifests.md +50 -0
- package/src/apothem/rules/host-discovery.md +56 -0
- package/src/apothem/rules/i18n-discipline-locale-cohorts.md +120 -0
- package/src/apothem/rules/i18n-discipline.md +70 -0
- package/src/apothem/rules/interactive-questions-canonical-shapes.md +590 -0
- package/src/apothem/rules/interactive-questions-detail.md +41 -0
- package/src/apothem/rules/interactive-questions-sweep-matchers.md +184 -0
- package/src/apothem/rules/interactive-questions.md +89 -0
- package/src/apothem/rules/large-file-generation.md +112 -0
- package/src/apothem/rules/large-file-reading.md +59 -0
- package/src/apothem/rules/living-docs.md +85 -0
- package/src/apothem/rules/multi-agent-workflow.md +57 -0
- package/src/apothem/rules/operational-mandates-expanded.md +78 -0
- package/src/apothem/rules/operational-mandates.md +88 -0
- package/src/apothem/rules/option-annotation-form.md +60 -0
- package/src/apothem/rules/option-annotation.md +45 -0
- package/src/apothem/rules/own-voice-reimplementation.md +86 -0
- package/src/apothem/rules/performance-discipline.md +91 -0
- package/src/apothem/rules/persistent-conventions-vigilance-checklist.md +54 -0
- package/src/apothem/rules/persistent-conventions-vigilance.md +61 -0
- package/src/apothem/rules/plain-language.md +56 -0
- package/src/apothem/rules/planning-techniques.md +130 -0
- package/src/apothem/rules/pre-emission-gate-bars.md +86 -0
- package/src/apothem/rules/pre-emission-gate.md +54 -0
- package/src/apothem/rules/production-ready-prs-surfaces.md +162 -0
- package/src/apothem/rules/production-ready-prs.md +83 -0
- package/src/apothem/rules/propagation.md +63 -0
- package/src/apothem/rules/recommend-next-step.md +106 -0
- package/src/apothem/rules/refactoring-discipline.md +76 -0
- package/src/apothem/rules/session-closure.md +44 -0
- package/src/apothem/rules/sota-elevation-exemplars.md +76 -0
- package/src/apothem/rules/sota-elevation.md +52 -0
- package/src/apothem/rules/source-accessibility.md +58 -0
- package/src/apothem/rules/surgical-manipulation.md +48 -0
- package/src/apothem/rules/systemic-participation-relations.md +108 -0
- package/src/apothem/rules/systemic-participation.md +70 -0
- package/src/apothem/rules/ten-dimension-check-dimensions.md +52 -0
- package/src/apothem/rules/ten-dimension-check.md +59 -0
- package/src/apothem/rules/token-budget-discipline.md +81 -0
- package/src/apothem/rules/token-efficiency-rewrite-protocol.md +79 -0
- package/src/apothem/rules/token-efficiency-rewrite.md +77 -0
- package/src/apothem/rules/tool-use-discipline.md +48 -0
- package/src/apothem/rules/visual-leverage.md +102 -0
- package/src/apothem/schemas/NOTICE.md +9 -0
- package/src/apothem/schemas/README.md +104 -0
- package/src/apothem/schemas/__init__.py +176 -0
- package/src/apothem/schemas/advisory-finding.schema.json +111 -0
- package/src/apothem/schemas/agent.schema.json +106 -0
- package/src/apothem/schemas/authorship-header.txt +1 -0
- package/src/apothem/schemas/cohort-manifest.yaml +248 -0
- package/src/apothem/schemas/cohort-metadata-vocabulary.yaml +168 -0
- package/src/apothem/schemas/cohort.schema.json +113 -0
- package/src/apothem/schemas/command.schema.json +68 -0
- package/src/apothem/schemas/compatibility-matrix.yaml +432 -0
- package/src/apothem/schemas/context-fragment.schema.json +64 -0
- package/src/apothem/schemas/freshness-token-denylist.txt +51 -0
- package/src/apothem/schemas/handoff-manifest.yaml +353 -0
- package/src/apothem/schemas/header-exceptions.txt +141 -0
- package/src/apothem/schemas/header-visibility.yaml +39 -0
- package/src/apothem/schemas/learning-signal.schema.json +46 -0
- package/src/apothem/schemas/memory-record.schema.json +61 -0
- package/src/apothem/schemas/output-style.schema.json +40 -0
- package/src/apothem/schemas/plan.schema.json +51 -0
- package/src/apothem/schemas/plugin.schema.json +83 -0
- package/src/apothem/schemas/profile.example.yaml +70 -0
- package/src/apothem/schemas/profile.minimal.yaml +6 -0
- package/src/apothem/schemas/profile.schema.json +396 -0
- package/src/apothem/schemas/reference-token-denylist.txt +25 -0
- package/src/apothem/schemas/skill.schema.json +75 -0
- package/src/apothem/skills/README.md +93 -0
- package/src/apothem/skills/dependency-upgrade/SKILL.md +105 -0
- package/src/apothem/skills/dev-toolkit/SKILL.md +120 -0
- package/src/apothem/skills/diagram-authoring/SKILL.md +113 -0
- package/src/apothem/skills/document-authoring/SKILL.md +118 -0
- package/src/apothem/skills/ecosystem-audit/SKILL.md +108 -0
- package/src/apothem/skills/ecosystem-audit/references/audit-fortress.md +85 -0
- package/src/apothem/skills/ecosystem-audit/references/procedure.md +162 -0
- package/src/apothem/skills/eval-harness/SKILL.md +88 -0
- package/src/apothem/skills/incident-runbook/SKILL.md +92 -0
- package/src/apothem/skills/multi-source-research/SKILL.md +90 -0
- package/src/apothem/skills/plan-suite/SKILL.md +118 -0
- package/src/apothem/skills/plan-suite/master_template.md +1324 -0
- package/src/apothem/skills/projectify/SKILL.md +117 -0
- package/src/apothem/skills/prompt-engineering/SKILL.md +122 -0
- package/src/apothem/skills/refactor-extract/SKILL.md +85 -0
- package/src/apothem/skills/research-suite/SKILL.md +170 -0
- package/src/apothem/skills/research-suite/references/directory-structure.md +47 -0
- package/src/apothem/skills/research-suite/references/lifecycle.md +67 -0
- package/src/apothem/skills/research-suite/references/principal-investigator-framework.md +37 -0
- package/src/apothem/skills/research-suite/references/rigor-mandates.md +30 -0
- package/src/apothem/skills/research-suite/research_template.md +476 -0
- package/src/apothem/skills/secret-rotation/SKILL.md +87 -0
- package/src/apothem/skills/source-synthesis/SKILL.md +92 -0
- package/src/apothem/skills/surgical-guard/SKILL.md +118 -0
- package/src/apothem/skills/test-authoring/SKILL.md +85 -0
- package/src/apothem/skills/vuln-triage/SKILL.md +91 -0
- package/src/apothem/skills/workflow/SKILL.md +139 -0
- package/src/apothem/statuslines/README.md +26 -0
- package/src/apothem/statuslines/__init__.py +20 -0
- package/src/apothem/statuslines/conformity.json +5 -0
- package/src/apothem/statuslines/render.py +334 -0
- package/src/apothem/statuslines/statusline.md +50 -0
- package/src/apothem/templates/README.md +43 -0
- package/src/apothem/templates/agents-md-template.md +80 -0
- package/src/apothem/templates/consideration-log.md +39 -0
- package/src/apothem/templates/expertise-gap-log.md +56 -0
- package/src/apothem/templates/master-index-template.md +93 -0
- package/src/apothem/templates/potency-map.md +53 -0
- package/src/apothem/templates/preservation-audit.md +60 -0
- package/src/apothem/templates/question-resolution-audit.md +52 -0
- package/src/apothem/templates/trace-matrix-template.md +77 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://apothem.ahmedgad.com/schemas/skill.schema.json",
|
|
4
|
+
"title": "Skill",
|
|
5
|
+
"description": "Frontmatter schema for skill definitions under src/apothem/skills/<name>/SKILL.md. Reconciled to the live skill corpus: every shipped SKILL.md carries name, description, version, updated, archetype, userInvocable, disable-model-invocation, and allowed-tools; argument-hint is optional. The agnostic posture forbids a model/effort/permission preset, so effort/model/permissionMode are not admitted keys.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"allowed-tools",
|
|
9
|
+
"archetype",
|
|
10
|
+
"description",
|
|
11
|
+
"disable-model-invocation",
|
|
12
|
+
"name",
|
|
13
|
+
"updated",
|
|
14
|
+
"userInvocable",
|
|
15
|
+
"version"
|
|
16
|
+
],
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"properties": {
|
|
19
|
+
"name": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Human-readable kebab-case name (matches the skill folder).",
|
|
22
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
|
|
23
|
+
},
|
|
24
|
+
"description": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Trigger-rich, capability-led description that surfaces detection signals so the harness routes matching requests to the skill. The shipped corpus uses dense trigger phrasing up to ~1.6k chars; the 2048 ceiling bounds the field while admitting the live convention.",
|
|
27
|
+
"maxLength": 2048
|
|
28
|
+
},
|
|
29
|
+
"version": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"description": "SemVer version of the skill definition.",
|
|
32
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
33
|
+
},
|
|
34
|
+
"updated": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"description": "ISO 8601 date of the skill's last revision.",
|
|
37
|
+
"format": "date",
|
|
38
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
39
|
+
},
|
|
40
|
+
"archetype": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "Shape class of the skill, named as a kebab-case '<class>-template' identifier (e.g. audit-template, authoring-template, workflow-template).",
|
|
43
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*-template$"
|
|
44
|
+
},
|
|
45
|
+
"userInvocable": {
|
|
46
|
+
"type": "boolean",
|
|
47
|
+
"description": "Whether the operator can invoke the skill directly through the Skill tool."
|
|
48
|
+
},
|
|
49
|
+
"disable-model-invocation": {
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"description": "When true, the skill is reached only by explicit invocation, never auto-selected by the model from its description."
|
|
52
|
+
},
|
|
53
|
+
"allowed-tools": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"description": "Comma-separated list of tools the skill may invoke (e.g. \"Read, Write, Edit, Glob, Grep, Bash\"), or \"*\" for the full surface."
|
|
56
|
+
},
|
|
57
|
+
"argument-hint": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"description": "Optional usage hint shown to the operator describing the skill's accepted arguments and flags."
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"examples": [
|
|
63
|
+
{
|
|
64
|
+
"name": "dependency-upgrade",
|
|
65
|
+
"description": "Changelog-reviewed, pinned, gate-verified dependency upgrade — matched when the operator asks to 'bump deps', 'upgrade dependencies', or 'refresh dependency versions'.",
|
|
66
|
+
"version": "0.1.0",
|
|
67
|
+
"updated": "2026-06-09",
|
|
68
|
+
"archetype": "maintenance-template",
|
|
69
|
+
"userInvocable": true,
|
|
70
|
+
"disable-model-invocation": true,
|
|
71
|
+
"allowed-tools": "Read, Write, Edit, Glob, Grep, Bash",
|
|
72
|
+
"argument-hint": "[--package NAME] [--dry-run]"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
|
|
3
|
+
# Skills
|
|
4
|
+
|
|
5
|
+
Skill definitions — reusable, detectable techniques the harness loads on demand. Each skill is **one folder** whose canonical entry point is `SKILL.md`: a Markdown file with YAML frontmatter declaring the skill's identity and trigger surface, and a body specifying the procedure.
|
|
6
|
+
|
|
7
|
+
## Index
|
|
8
|
+
|
|
9
|
+
| Skill | Purpose | Invocability |
|
|
10
|
+
|-------|---------|--------------|
|
|
11
|
+
| [`ecosystem-audit/`](ecosystem-audit/) | Blind audit of the apothem ecosystem — detects drift, staleness, orphans, dangling references, conflicting directives, frontmatter invalidity, registry-vs-disk count mismatches, secret exposure. Optionally applies FIX-class fixes under `--fix`. | User-invocable; also dispatchable from `/plan-execute` discovery context. |
|
|
12
|
+
| [`plan-suite/`](plan-suite/) | Master Plan Suite template — houses the canonical template defining plan-suite structure, mandates, core principles, and the Technical Co-Founder Framework. | Not directly user-invocable; the `/plan` pipeline stages resolve the template by path. |
|
|
13
|
+
| [`research-suite/`](research-suite/) | Research Suite knowledge surface — houses the canonical research-suite template defining the suite directory structure, the ten rigor mandates (R1–R10), the thirteen-stage research lifecycle, and the Principal-Investigator Framework. | Not directly user-invocable; the `/research` pipeline stages resolve the template by path. |
|
|
14
|
+
| [`test-authoring/`](test-authoring/) | Behavior-first test authoring with strict Arrange-Act-Assert discipline — discovers a unit's behavior contracts, writes failing AAA assertions covering happy path, edge boundaries, and failure modes, and reports residual coverage gaps. Authors tests only. | User-invocable. |
|
|
15
|
+
| [`refactor-extract/`](refactor-extract/) | Scoped behavior-preserving extraction refactor — extracts what the code does, clean-room re-derives from the extracted specification, elevates quality against a named deficiency, and verifies behavior is preserved. | User-invocable. |
|
|
16
|
+
| [`dependency-upgrade/`](dependency-upgrade/) | Changelog-reviewed, pinned, gate-verified dependency upgrade — enumerates outdated dependencies, reviews each changelog for breaking changes, applies host-policy pinned bumps, and runs the host's lint / test / type-check gates. | User-invocable. |
|
|
17
|
+
| [`incident-runbook/`](incident-runbook/) | Operational incident runbook authoring and execution — produces a Trigger → Diagnosis → Action → Verification → Rollback procedure where every action carries an explicit, tested rollback path. | User-invocable. |
|
|
18
|
+
| [`secret-rotation/`](secret-rotation/) | Safe secret-rotation template — detects the exposure surface, revokes the compromised credential at its issuer, re-issues a replacement, rewires config through env-var or secret-manager indirection, and verifies no plaintext residue remains. | User-invocable. |
|
|
19
|
+
| [`vuln-triage/`](vuln-triage/) | Vulnerability and security-advisory triage — severity-classifies an advisory, maps it to the affected surface, determines exploitability and reachability, routes remediation, and records the disposition with rationale. | User-invocable. |
|
|
20
|
+
| [`multi-source-research/`](multi-source-research/) | Multi-source research harness — decomposes the question, fans out parallel source-discovery queries, fetches and extracts per source, adversarially verifies each claim against two or more independent sources, and synthesizes a cited report. | User-invocable. |
|
|
21
|
+
| [`source-synthesis/`](source-synthesis/) | Reconcile a fixed set of provided sources into one cited synthesis — extracts the claim set per source, reconciles agreements and contradictions, and separates consensus from contested ground while flagging coverage gaps. | User-invocable. |
|
|
22
|
+
| [`prompt-engineering/`](prompt-engineering/) | Design and eval-validate structured prompts — clarifies the task contract, drafts a structured prompt with explicit role / instructions / output schema, defines happy / edge / adversarial eval cases, and iterates against them. | User-invocable. |
|
|
23
|
+
| [`eval-harness/`](eval-harness/) | Build and run reproducible LLM evaluation harnesses — defines a labeled dataset, a scorer with an explicit pass criterion, a candidate runner, and an aggregated metrics report with per-category breakdowns, confidence, and regression detection. | User-invocable. |
|
|
24
|
+
| [`workflow/`](workflow/) | Workflow-harnessing orchestration — decomposes a mission, dispatches genuinely-independent multi-agent dynamic workflows under named return contracts, runs a refute-by-default verification pass before any finding survives, and self-augments from current authoritative sources. Multi-agent dispatch is opt-in / confirmation-gated. | User-invocable (entry form `/goal <<mission>>`). |
|
|
25
|
+
| [`projectify/`](projectify/) | Chat-app Project elevation — produces the three deliverables (Description, Instruction, knowledge Files) for a Claude Project / ChatGPT Custom GPT / Gemini Gem through a structured-inquiry-saturated elicitation, holding knowledge files within a measurable per-platform context budget. | User-invocable. |
|
|
26
|
+
| [`diagram-authoring/`](diagram-authoring/) | Diagram authoring and rendering — one author → validate → render → export pipeline covering declarative diagrams (flowchart / sequence / state / class / ER / gantt) and data-driven visualizations, exporting to SVG / PNG / PDF via a headless renderer. | User-invocable. |
|
|
27
|
+
| [`document-authoring/`](document-authoring/) | Long-form structured-document authoring — an approval-gated outline → draft → review pipeline with verified citations (every reference resolves to a real source) and a deterministic compile pipeline routing engine / bibliography / index passes by detected source features. | User-invocable. |
|
|
28
|
+
| [`dev-toolkit/`](dev-toolkit/) | Engineering-discipline toolkit — sequences the core loops (structured debugging, test-first red-green-refactor, vertical-slice decomposition, requirement-to-issue breakdown) into one composable, gated procedure; cross-references sibling capabilities (does not duplicate them). | User-invocable. |
|
|
29
|
+
| [`surgical-guard/`](surgical-guard/) | Surgical-edit + reactive-guard — pairs a minimal-diff, anchor-bounded editing discipline with a post-edit diff-based quality guard (clean-code / test / docs checks with progressive rule loading); feeds the `surgical-manipulation` mandate. | User-invocable. |
|
|
30
|
+
|
|
31
|
+
## What a skill is
|
|
32
|
+
|
|
33
|
+
A skill packages a technique with a **detection signal** — the frontmatter `description` enumerates the phrasings or contexts that match the skill — and a **procedure** — the body that runs once matched. The harness surfaces a matched skill to the agent; the agent invokes it.
|
|
34
|
+
|
|
35
|
+
## Progressive disclosure
|
|
36
|
+
|
|
37
|
+
Skills load on demand. Keep `description` precise enough that the harness can
|
|
38
|
+
match the skill from the user's request, touched paths, or task class without
|
|
39
|
+
pulling unrelated procedures into baseline context. When a skill applies only to
|
|
40
|
+
one subtree, name the subtree or file class in the detection signal and keep
|
|
41
|
+
supporting references beside `SKILL.md` so the procedure can load them
|
|
42
|
+
selectively.
|
|
43
|
+
|
|
44
|
+
## The skill convention
|
|
45
|
+
|
|
46
|
+
- **One folder per skill**, named in kebab-case, under `skills/`.
|
|
47
|
+
- **Entry point is always `SKILL.md`** with YAML frontmatter validated against [`../schemas/skill.schema.json`](../schemas/skill.schema.json). Required frontmatter fields (per `skill.schema.json`): `name`, `version`, `updated`, `description` (the detection signal), `archetype` (the skill's shape class, e.g. `audit-template`, `workflow-template`), `userInvocable`, `disable-model-invocation`, and `allowed-tools`; the optional `argument-hint` field may also appear.
|
|
48
|
+
- **Supporting files** live alongside `SKILL.md` in the same folder. The `plan-suite/` skill ships `master_template.md` — the canonical plan-suite template the `/plan` pipeline stages consume.
|
|
49
|
+
- Every file carries the canonical single-line SPDX license header.
|
|
50
|
+
|
|
51
|
+
## Folder contents
|
|
52
|
+
|
|
53
|
+
| Path | Role |
|
|
54
|
+
|------|------|
|
|
55
|
+
| `ecosystem-audit/SKILL.md` | The audit skill's concise entry-point router. |
|
|
56
|
+
| `ecosystem-audit/references/procedure.md` | The five-phase audit procedure, improvement-classification taxonomy, failure-recovery table, cadence guidance, and phase-thread diagram (progressively disclosed by the router). |
|
|
57
|
+
| `ecosystem-audit/references/audit-fortress.md` | The Audit-Fortress Phase Skeleton (canonical flowchart + per-command parameter table) the eleven audit-fortress commands cite. |
|
|
58
|
+
| `plan-suite/SKILL.md` | The plan-suite skill's entry point. |
|
|
59
|
+
| `plan-suite/master_template.md` | The canonical Master Plan Suite template resolved by `/plan-spec`, `/plan-generate`, `/plan-review`, `/plan-audit`, `/plan-design`, `/plan-execute`, `/plan-status`. |
|
|
60
|
+
| `research-suite/SKILL.md` | The research-suite skill's concise entry-point router. |
|
|
61
|
+
| `research-suite/research_template.md` | The canonical Research Suite template resolved by the `/research-<stage>` commands. |
|
|
62
|
+
| `research-suite/references/directory-structure.md` | The research-suite directory-structure map (progressively disclosed by the router). |
|
|
63
|
+
| `research-suite/references/rigor-mandates.md` | The ten rigor mandates (R1–R10) in full (progressively disclosed by the router). |
|
|
64
|
+
| `research-suite/references/lifecycle.md` | The thirteen-stage research lifecycle + per-stage invoking-surfaces table (progressively disclosed by the router). |
|
|
65
|
+
| `research-suite/references/principal-investigator-framework.md` | The Principal-Investigator (PI) lens and its six commitments (progressively disclosed by the router). |
|
|
66
|
+
| `test-authoring/SKILL.md` | The test-authoring skill's entry point and procedure. |
|
|
67
|
+
| `refactor-extract/SKILL.md` | The refactor-extract skill's entry point and procedure. |
|
|
68
|
+
| `dependency-upgrade/SKILL.md` | The dependency-upgrade skill's entry point and procedure. |
|
|
69
|
+
| `incident-runbook/SKILL.md` | The incident-runbook skill's entry point and procedure. |
|
|
70
|
+
| `secret-rotation/SKILL.md` | The secret-rotation skill's entry point and procedure. |
|
|
71
|
+
| `vuln-triage/SKILL.md` | The vuln-triage skill's entry point and procedure. |
|
|
72
|
+
| `multi-source-research/SKILL.md` | The multi-source-research skill's entry point and procedure. |
|
|
73
|
+
| `source-synthesis/SKILL.md` | The source-synthesis skill's entry point and procedure. |
|
|
74
|
+
| `prompt-engineering/SKILL.md` | The prompt-engineering skill's entry point and procedure. |
|
|
75
|
+
| `eval-harness/SKILL.md` | The eval-harness skill's entry point and procedure. |
|
|
76
|
+
| `workflow/SKILL.md` | The workflow-harnessing skill's entry point and procedure. |
|
|
77
|
+
| `projectify/SKILL.md` | The projectify skill's entry point and procedure. |
|
|
78
|
+
| `diagram-authoring/SKILL.md` | The diagram-authoring skill's entry point and procedure. |
|
|
79
|
+
| `document-authoring/SKILL.md` | The document-authoring skill's entry point and procedure. |
|
|
80
|
+
| `dev-toolkit/SKILL.md` | The dev-toolkit skill's entry point and procedure. |
|
|
81
|
+
| `surgical-guard/SKILL.md` | The surgical-guard skill's entry point and procedure. |
|
|
82
|
+
|
|
83
|
+
## Operating in this folder
|
|
84
|
+
|
|
85
|
+
- **One folder per skill; the entry point is always `SKILL.md`,** never a differently-named file. The `description` frontmatter field is the match surface: make it precise enough that the harness selects the skill from the request, touched paths, or task class without pulling unrelated procedures into context.
|
|
86
|
+
- **Keep supporting files self-loading and beside the entry point;** do not scatter a skill's references across the tree, so they load selectively with the procedure rather than into baseline context.
|
|
87
|
+
- **Adding a skill:** create a new kebab-case subfolder, author its `SKILL.md` with valid frontmatter and an SPDX header, place supporting files beside it, then register the skill in the index and Folder-contents tables above and in any consuming command — in the same change-set. **Removing or renaming a skill** updates the same tables and every consumer in the same change-set.
|
|
88
|
+
- Validate a change with `python -m apothem.conformity.gate --all .`, `python -m pytest`, and `python -m ruff check`.
|
|
89
|
+
|
|
90
|
+
## Cross-references
|
|
91
|
+
|
|
92
|
+
- The `/plan` pipeline stages that consume `plan-suite/` are under [`../commands/`](../commands/).
|
|
93
|
+
- Convention and gap-detection discipline for skills is specified in `../rules/persistent-conventions-vigilance.md`.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "dependency-upgrade"
|
|
3
|
+
version: "0.1.0"
|
|
4
|
+
updated: "2026-06-09"
|
|
5
|
+
description: "Changelog-reviewed, pinned, gate-verified dependency upgrade — matched when the operator asks to 'bump deps', 'upgrade dependencies', 'update packages', 'bump the lockfile', 'refresh dependency versions', or any phrasing requesting an audited version bump of the host project's third-party dependencies. Five-step loop: enumerate outdated dependencies from the host's manifest + lockfile, classify each candidate against its changelog (safe / breaking / major), apply pinned bumps honoring the host's discovered pin policy, run the host's lint / test / type-check gates, and report. Breaking and major candidates STOP for structured inquiry — never crossed silently. Idempotent (re-run on a current manifest yields zero bumps); --dry-run classifies without writing; --package NAME scopes to one dependency. Developer + security cohorts; user-invocable; honors host-discovered tooling and assumes no package manager."
|
|
6
|
+
archetype: "maintenance-template"
|
|
7
|
+
userInvocable: true
|
|
8
|
+
argument-hint: "[--package NAME] [--dry-run]"
|
|
9
|
+
disable-model-invocation: true
|
|
10
|
+
allowed-tools: "Read, Write, Edit, Glob, Grep, Bash"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Upgrade the host project's third-party dependencies under one discipline: **changelog-reviewed, pinned, gate-verified**. No bump lands without a breaking-change review of the candidate's changelog; every applied version honors the host's discovered pin policy; the host's full quality matrix is green before the change is reported complete. The skill bumps declared dependencies and lets the host's resolver own the transitive graph — its value is *audited safety*, not raw version-chasing.
|
|
18
|
+
|
|
19
|
+
## Detection Signal
|
|
20
|
+
|
|
21
|
+
The operator requests "bump deps", "upgrade dependencies", "update packages", "bump the lockfile", "refresh dependency versions", or any phrasing asking for an audited version bump of the host's third-party dependencies. Flags: `--package NAME` scopes the upgrade to one dependency; `--dry-run` enumerates and classifies without writing the bump.
|
|
22
|
+
|
|
23
|
+
## Non-Goals
|
|
24
|
+
|
|
25
|
+
A deliberately narrow surface — each boundary routes the out-of-scope work to its rightful owner:
|
|
26
|
+
|
|
27
|
+
- **Not a transitive-resolver replacement.** Bumps declared dependencies and lets the host's package manager resolve the transitive graph; never hand-edits transitive pins or overrides the lock algorithm.
|
|
28
|
+
- **Not a migration-code generator.** When a changelog names a breaking API change, surfaces the break for operator decision; never rewrites call sites. Code migration is a separate, operator-driven workstream.
|
|
29
|
+
- **Not a security-advisory scanner.** Known-vulnerability detection is the host's audit tool (`pip-audit`, `npm audit`, `cargo audit`) under the host's CI; this skill reviews changelogs for breaking changes, not advisory databases.
|
|
30
|
+
- **Not a major-version forcer.** A SemVer-major boundary is a version-pin inquiry category; never crossed silently — the crossing routes through the structured-inquiry channel.
|
|
31
|
+
- **Not a manifest restructurer.** Bumps pins in place; never reorganizes dependency groups, splits runtime from development dependencies, or changes the declared pin policy. Manifest restructuring is operator-driven.
|
|
32
|
+
|
|
33
|
+
## Workflow
|
|
34
|
+
|
|
35
|
+
The five steps run in order; each carries a testable post-condition.
|
|
36
|
+
|
|
37
|
+
1. **Enumerate outdated dependencies (host-discovery).** Walk the host's ratified manifest + lockfile per `rules/host-discovery.md`:
|
|
38
|
+
|
|
39
|
+
| Ecosystem | Manifest | Lockfile | Outdated-report command |
|
|
40
|
+
|-----------|----------|----------|-------------------------|
|
|
41
|
+
| Python | `pyproject.toml` / `requirements*.txt` / `Pipfile` | matching lock | `pip list --outdated` |
|
|
42
|
+
| Node | `package.json` | `package-lock.json` / `yarn.lock` / `pnpm-lock.yaml` | `npm outdated` |
|
|
43
|
+
| Rust | `Cargo.toml` | `Cargo.lock` | `cargo outdated` |
|
|
44
|
+
| Go | `go.mod` | `go.sum` | `go list -m -u all` |
|
|
45
|
+
|
|
46
|
+
Under `--package NAME`, narrow to the named dependency. **Testable:** the candidate set is the exact intersection of declared dependencies and the host outdated-report output.
|
|
47
|
+
|
|
48
|
+
2. **Classify each candidate against its changelog.** For each candidate, read the project's changelog at its canonical source (CHANGELOG.md, the forge's Releases page, the registry's release notes) for every version between the installed pin and the upgrade target. Assign exactly one of three classes:
|
|
49
|
+
|
|
50
|
+
- `safe` — patch / minor with no breaking entry in range.
|
|
51
|
+
- `breaking` — a breaking entry in range (no major boundary crossed).
|
|
52
|
+
- `major` — crosses a SemVer-major boundary.
|
|
53
|
+
|
|
54
|
+
**Testable:** every candidate carries a class with its changelog source cited.
|
|
55
|
+
|
|
56
|
+
3. **Apply the pinned version bump.** For `safe` candidates only, edit the manifest to the upgrade target honoring the host's discovered pin policy — exact `==X.Y.Z` where the host pins exactly; range operator (`^`, `~`, `>=`) where the host uses ranges. Regenerate the lockfile via the host's lock command (`pip-compile`, `npm install`, `cargo update -p NAME`, `go get`). `breaking` and `major` candidates STOP for structured inquiry before any write. Under `--dry-run`, write nothing. **Testable:** the manifest diff touches only the bumped pins, and each new pin matches the host's pin-policy shape.
|
|
57
|
+
|
|
58
|
+
4. **Run the host's quality gates.** Execute the host's discovered lint, test, and type-check commands (`ruff check` / `pytest` / `mypy` for Python; `eslint` / the configured test runner / `tsc` for Node; the host's equivalents elsewhere). A gate failure traceable to a bump reverts that candidate and reclassifies it `breaking` for operator decision. **Testable:** every applied bump leaves the host's full gate matrix green, or is reverted.
|
|
59
|
+
|
|
60
|
+
5. **Report.** Emit the upgrade report per the Return Contract — candidate set, per-candidate class with changelog source, applied bumps with before/after pins, gate outcomes, and the deferred `breaking` / `major` candidates with their inquiry records. **Testable:** the applied-bump count equals the count of `safe` candidates whose gates stayed green; the deferred count equals the `breaking` plus `major` count.
|
|
61
|
+
|
|
62
|
+
**Idempotence.** A second invocation against an already-current manifest enumerates an empty candidate set at Step 1 and reports zero bumps. **Dry-run.** A `--dry-run` invocation stops after Step 2's classification with nothing written, so the operator reviews the proposed bumps and their changelog citations before committing to the manifest edit.
|
|
63
|
+
|
|
64
|
+
## Return Contract
|
|
65
|
+
|
|
66
|
+
Maximum response: 1500 tokens. Structure:
|
|
67
|
+
|
|
68
|
+
- **Summary** — one sentence naming the count of candidates enumerated, bumped, and deferred.
|
|
69
|
+
- **Applied bumps** — a table of `package · from · to · classification · gate-outcome`.
|
|
70
|
+
- **Deferred** — `breaking` / `major` candidates with the changelog citation and the structured-inquiry record.
|
|
71
|
+
- **Gate results** — the host's lint / test / type-check outcomes for the change-set.
|
|
72
|
+
|
|
73
|
+
Under `--dry-run`, the Applied-bumps table reports the *proposed* bumps with no gate-outcome column; nothing is written.
|
|
74
|
+
|
|
75
|
+
## Foundational Stanzas
|
|
76
|
+
|
|
77
|
+
The four standing surfaces every operator inherits, adapted to this skill's user-invocable maintenance role.
|
|
78
|
+
|
|
79
|
+
### Refusal & Escalation
|
|
80
|
+
|
|
81
|
+
REFUSE any request to act outside the stated mission — migration-code generation, transitive-pin hand-editing, advisory scanning, silent major-version crossing. Refusal is explicit: name what was refused, name the mission boundary crossed, and surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md` (canonical channel; three-segment option annotation; never free-form prose as primary input). When the host exposes no recognizable manifest or lockfile, STOP and surface the discovery gap; never invent a package-manager convention.
|
|
82
|
+
|
|
83
|
+
### Output Surface
|
|
84
|
+
|
|
85
|
+
The primary output is the upgrade report (markdown) written to STDOUT. The bump itself edits the host's manifest and lockfile at their canonical locations per `rules/host-discovery.md`; per `rules/operational-mandates.md` CM-7, those edits carry natural domain language with zero plan-internal references. The change-set ships production-ready per `rules/production-ready-prs.md` — the bump, the regenerated lockfile, a CHANGELOG entry where the host maintains one, and a conformant commit message, all in one change-set. NEVER write the report or any scratch state to a global-ecosystem location or to a downstream project's `.apothem/plans/`.
|
|
86
|
+
|
|
87
|
+
### File-Authoring Contract
|
|
88
|
+
|
|
89
|
+
The skill edits manifest and lockfile artifacts in place; new files are rare. A NEW file routes through `scripts/inject-header.py` so the canonical single-line SPDX header is injected at the head — the injector is idempotent and detects the filetype variant automatically. Lockfiles and JSON config are header-exempt per `src/apothem/schemas/header-exceptions.txt`, so manifest and lock edits preserve the file's existing head. The header-inject-guard hook at `hooks/messages/pretooluse-{write,edit}-header-guard.md` enforces the contract at every Write / Edit invocation.
|
|
90
|
+
|
|
91
|
+
### Structured Inquiry on Ambiguity
|
|
92
|
+
|
|
93
|
+
At every version-pin decision per `rules/authority-inquiry.md` — which version of which dependency where the host has not pinned and the choice matters (security-relevant deps, behavioral-shift deps, SemVer-major boundaries) — when the host is silent, route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3 (rationale / recommendation / default-pointer). Free-form prose questions as primary input are forbidden. NEVER fabricate a version pin. Every `breaking` and `major` candidate blocks its own bump until the operator resolves the inquiry; the upgrade target carries its changelog citation as the recommended-option rationale.
|
|
94
|
+
|
|
95
|
+
## Recommended Next Step
|
|
96
|
+
|
|
97
|
+
**Run the host's dependency-audit command** (`pip-audit`, `npm audit`, or `cargo audit`) against the upgraded change-set to confirm the bumps closed known advisories without introducing new ones before the change-set lands at its commit gate.
|
|
98
|
+
|
|
99
|
+
## Bindings (§0.j five-direction)
|
|
100
|
+
|
|
101
|
+
- **Drives →** ● Every dependency-upgrade engagement against a host project's manifest and lockfile. ● The changelog-review-before-bump discipline at every candidate. ● The host-pin-policy honoring at every applied version bump. ◐ The production-ready change-set shape (bump + lockfile + CHANGELOG + commit).
|
|
102
|
+
- **Satisfies →** ● `CLAUDE.md` Source Layout row "dependency-upgrade" (skills/ class). ● The maintenance-template archetype's audited-version-bump mission.
|
|
103
|
+
- **Established by ↑** ● `CLAUDE.md` Source Layout (skills/ class declaration with the folder-with-`SKILL.md` convention). ● `CLAUDE.md` Ambiguity Handling (structured inquiry over fabrication).
|
|
104
|
+
- **Gated by ←** ● The harness's Bash tool surface (the outdated-report, lock-regeneration, and gate commands run through it). ● The presence of a recognizable host manifest and lockfile (host-discovery resolves the package manager).
|
|
105
|
+
- **Cross-bound with ↔** ↔ `rules/host-discovery.md` (manifest / lockfile / pin-policy discovery). ↔ `rules/production-ready-prs.md` (the change-set ships tests + CHANGELOG + conformant commit in one set). ↔ `rules/interactive-questions.md` (version-pin inquiries route through the canonical channel). ↔ `skills/ecosystem-audit/SKILL.md` (sibling maintenance-tier skill).
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "dev-toolkit"
|
|
3
|
+
version: "0.1.0"
|
|
4
|
+
updated: "2026-06-14"
|
|
5
|
+
description: "Engineering-discipline toolkit — matched when the operator asks to 'diagnose a bug', 'debug systematically', 'do TDD / write a failing test first', 'break this into vertical slices', 'turn this into a PRD / issues', 'decompose this work', or otherwise needs a disciplined software-engineering loop rather than an ad-hoc fix. Sequences four named, gated, composable loops — structured debugging (reproduce → minimize → hypothesize → instrument → fix root cause), test-first red-green-refactor (red observed before green), vertical-slice decomposition (independently-shippable testable units), and requirement-to-issue breakdown (goal → testable requirement set → tracked issues + ADR) — selected by --mode or by the request. Cross-references (never duplicates) sibling owners: orchestration → /workflow, diagrams → diagram-authoring, minimal-diff guarding → surgical-guard. Harness-agnostic; deterministic output; drives the host's discovered toolchain."
|
|
6
|
+
archetype: "engineering-template"
|
|
7
|
+
userInvocable: true
|
|
8
|
+
argument-hint: "[task or defect] [--mode diagnose|tdd|slice|decompose]"
|
|
9
|
+
disable-model-invocation: true
|
|
10
|
+
allowed-tools: "Read, Write, Edit, Glob, Grep, Bash, TodoWrite"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Apply a disciplined software-engineering loop to a task or defect instead of an ad-hoc fix. The skill sequences four core loops into one composable, gated procedure:
|
|
18
|
+
|
|
19
|
+
- **structured debugging** — reproduce → minimize → hypothesize → instrument → fix root cause;
|
|
20
|
+
- **test-first development** — red → green → refactor (red observed, never assumed);
|
|
21
|
+
- **vertical-slice decomposition** — break work into independently-shippable, independently-testable units;
|
|
22
|
+
- **requirement-to-issue breakdown** — turn a goal into a testable requirement set, then tracked issues + an ADR.
|
|
23
|
+
|
|
24
|
+
Its value is **expressiveness**: the loops are *named and sequenced* so the engineering intent is legible, rather than scattered across unrelated one-off commands.
|
|
25
|
+
|
|
26
|
+
## Detection Signal
|
|
27
|
+
|
|
28
|
+
The operator asks to diagnose / debug systematically, write a failing test first (TDD), break work into vertical slices, turn a goal into a PRD / issues, or decompose a non-trivial task. A request that one direct edit resolves is below this skill's threshold.
|
|
29
|
+
|
|
30
|
+
## Non-Goals
|
|
31
|
+
|
|
32
|
+
Each boundary routes the out-of-scope work to its canonical owner — encoding the EF-2 single-source-of-truth principle. The source toolkits this skill is reauthored from bundled orchestration, diagramming, and guarding together; apothem keeps each capability with its owner and cross-references rather than duplicating.
|
|
33
|
+
|
|
34
|
+
- **Not a multi-agent orchestrator.** Parallel agent dispatch, background-agent management, and git-worktree isolation route to `/workflow` (the orchestration owner) — this skill applies the engineering loops, it does not orchestrate agents.
|
|
35
|
+
- **Not a diagram tool.** Technical diagrams (architecture, sequence, data-flow) route to `diagram-authoring` — this skill references a diagram, it does not render one.
|
|
36
|
+
- **Not a guard / surgical-edit tool.** Minimal-diff editing discipline and post-edit quality guarding route to `surgical-guard` — this skill produces the change, that skill guards how it lands.
|
|
37
|
+
- **Not a host-tool replacement.** It drives the host's discovered test runner / linter / type-checker; it ships none of its own. The toolchain is discovered, not assumed.
|
|
38
|
+
|
|
39
|
+
## Conformity Posture
|
|
40
|
+
|
|
41
|
+
- **Discover-don't-assume preamble (M1).** Discover the host's test runner, linter, type-checker, and issue / ADR conventions per `rules/host-discovery.md`; the loops drive the host's ratified tools, not assumed ones. Record discoveries with provenance.
|
|
42
|
+
- **Search-before-implement (CM-4).** Before authoring a fix or a slice, search the codebase for the reusable component — the engineering loops begin from the host's actual state.
|
|
43
|
+
|
|
44
|
+
## Procedure
|
|
45
|
+
|
|
46
|
+
The skill selects the loop by `--mode` (or by the request when `--mode` is unset); the loops compose. Every loop is **gated** — a step does not advance until its gate is satisfied.
|
|
47
|
+
|
|
48
|
+
### Mode: diagnose — Structured Debugging
|
|
49
|
+
|
|
50
|
+
`reproduce → minimize → hypothesize → instrument → fix → verify`
|
|
51
|
+
|
|
52
|
+
Reproduce the defect (a failing observation) → minimize to the smallest reproducing case → hypothesize the root cause → instrument to confirm or refute the hypothesis → fix the **root cause** (not the symptom, per CM-8) → verify the reproduction now passes. **Gates:** no fix before a confirmed hypothesis; no "done" before the minimized reproduction passes.
|
|
53
|
+
|
|
54
|
+
### Mode: tdd — Red-Green-Refactor
|
|
55
|
+
|
|
56
|
+
`red → green → refactor`
|
|
57
|
+
|
|
58
|
+
Write a behavioral test that **fails first** (red — observed failing, never assumed) → implement the minimum to pass (green) → refactor with the test as the safety net (refactor). **Gate:** the red observation — a green claimed without a prior observed red is non-conformant.
|
|
59
|
+
|
|
60
|
+
### Mode: slice — Vertical-Slice Decomposition
|
|
61
|
+
|
|
62
|
+
Break the work into independently-shippable, independently-testable vertical slices — each delivers observable value end-to-end and carries its own acceptance criteria + test. **Gate:** surface the slice boundaries for approval where they are non-obvious.
|
|
63
|
+
|
|
64
|
+
### Mode: decompose — Requirement-to-Issue Breakdown
|
|
65
|
+
|
|
66
|
+
Turn the goal into a structured requirement set (each requirement testable) → then into tracked issues at the host's discovered issue surface → recording an ADR where the decomposition embeds a durable design decision. Domain vocabulary is captured once (a shared context document) so the requirements read coherently. **Gate:** no requirement without a testable acceptance criterion.
|
|
67
|
+
|
|
68
|
+
### Self-Check (every mode)
|
|
69
|
+
|
|
70
|
+
Run the host's discovered quality gates (lint / type-check / test) and the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against every emitted artifact. Emit the change / decomposition plus the single recommended next move.
|
|
71
|
+
|
|
72
|
+
## Arguments
|
|
73
|
+
|
|
74
|
+
- `[task or defect]` — the task to engineer or the defect to diagnose, in natural language.
|
|
75
|
+
- `--mode diagnose|tdd|slice|decompose` — the engineering loop (default: selected by the request).
|
|
76
|
+
|
|
77
|
+
## Return Contract
|
|
78
|
+
|
|
79
|
+
The mode's deliverable, plus the host-gate results, the fifteen-bar attestation, and a single `## Recommended Next Step`:
|
|
80
|
+
|
|
81
|
+
| `--mode` | Deliverable |
|
|
82
|
+
|----------|-------------|
|
|
83
|
+
| `diagnose` | the root-cause fix + the passing-reproduction verification |
|
|
84
|
+
| `tdd` | the red→green→refactor change (with the observed-red evidence) |
|
|
85
|
+
| `slice` | the slice set, each with acceptance criteria + a test |
|
|
86
|
+
| `decompose` | the requirement set + tracked issues + the ADR |
|
|
87
|
+
|
|
88
|
+
Deterministic per `rules/determinism.md` — the same task + host state yields the same loop output.
|
|
89
|
+
|
|
90
|
+
## Foundational Stanzas
|
|
91
|
+
|
|
92
|
+
The four standing surfaces every operator inherits per the canonical project voice at `AGENTS.md` plus the active harness mirror.
|
|
93
|
+
|
|
94
|
+
### Refusal & Escalation
|
|
95
|
+
|
|
96
|
+
REFUSE any request beyond the engineering loops — name what was refused, name the boundary crossed, surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md`. REFUSE a "fix" that addresses a symptom when the structured-debugging loop has not isolated the root cause — surface the unfinished diagnosis instead. REFUSE marking a TDD cycle green when the test was not first observed failing (red).
|
|
97
|
+
|
|
98
|
+
### Output Surface
|
|
99
|
+
|
|
100
|
+
Code changes, tests, and decomposition artifacts land at their domain-natural host locations per `rules/host-discovery.md`. Per CM-7, every artifact carries natural domain language — zero engineering-process-internal scaffolding. NEVER write a plan artifact outside the active suite.
|
|
101
|
+
|
|
102
|
+
### File-Authoring Contract
|
|
103
|
+
|
|
104
|
+
Every NEW code / test file routes through `scripts/inject-header.{sh,py}` for the canonical SPDX banner (fixture at `src/apothem/schemas/authorship-header.txt`); exempt classes at `src/apothem/schemas/header-exceptions.txt`. Edits preserve any existing banner; the header-inject-guard hook enforces the contract. Code honors the host's per-language code-craft conventions (discovered).
|
|
105
|
+
|
|
106
|
+
### Structured Inquiry on Ambiguity
|
|
107
|
+
|
|
108
|
+
When the task's acceptance criteria, the slice boundaries, the reproduction steps, or the requirement scope are ambiguous, route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3. NEVER fabricate a reproduction, a requirement, or a test expectation.
|
|
109
|
+
|
|
110
|
+
## Recommended Next Step
|
|
111
|
+
|
|
112
|
+
**Invoke the `dev-toolkit` skill via the Skill tool** with `<task> --mode <diagnose|tdd|slice|decompose>` — run the selected loop to its gate, then route any surfaced orchestration to `/workflow`, any diagram to the `diagram-authoring` skill, and the change's landing discipline to the `surgical-guard` skill. Re-run in `decompose` mode first when the task is large enough to need slicing before implementation.
|
|
113
|
+
|
|
114
|
+
## Bindings (§0.j five-direction)
|
|
115
|
+
|
|
116
|
+
- **Drives →** ● Every disciplined engineering loop applied to a host task or defect. ● The host's discovered quality gates at the Self-Check step. ◐ Cross-references to `/workflow`, `diagram-authoring`, `surgical-guard` for the out-of-scope overlaps (EF-2 boundary).
|
|
117
|
+
- **Satisfies →** ● `CLAUDE.md` Source Layout row "dev-toolkit" (skills/ class). ● The elevation dimension **expressiveness** (named, sequenced, composable engineering loops vs. a loose bag of commands). ● `rules/operational-mandates.md` (CM-4 search-before-implement; CM-8 root-cause-not-symptom).
|
|
118
|
+
- **Established by ↑** ● `CLAUDE.md` Source Layout (skills/ folder-with-`SKILL.md` class). ● `CLAUDE.md` Ambiguity Handling (structured inquiry over fabrication). ● `rules/own-voice-reimplementation.md` (zero-verbatim; `reference-token-grep` = 0). ● `rules/agnostic-posture.md` (17-harness agnostic floor).
|
|
119
|
+
- **Gated by ←** ● The host's discovered test runner / linter / type-checker (the gap is surfaced where absent). ● The per-mode gates (no fix before confirmed hypothesis; no green before red). ● The host's structured-inquiry + Edit + Write + Bash tool surface.
|
|
120
|
+
- **Cross-bound with ↔** ↔ `skills/workflow/SKILL.md` (orchestration owner — overlaps route there). ↔ `skills/diagram-authoring/SKILL.md` (diagram owner). ↔ `skills/surgical-guard/SKILL.md` (minimal-diff + guard owner; this skill produces the change, that skill guards how it lands). ↔ `rules/own-voice-reimplementation.md` + `rules/agnostic-posture.md` (own-voice + agnostic floors). ↔ `skills/document-authoring/SKILL.md` (sibling own-voice authoring skill).
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "diagram-authoring"
|
|
3
|
+
version: "0.1.0"
|
|
4
|
+
updated: "2026-06-14"
|
|
5
|
+
description: "Diagram authoring and rendering — matched when the operator asks to 'draw a diagram', 'make a flowchart / sequence / state / ER / architecture diagram', 'author a data visualization', 'render this Mermaid', 'export a diagram to SVG/PNG/PDF', or otherwise needs a structural picture authored and rendered. One deterministic pipeline — pick notation by subject → author source → validate syntax → render → export — spanning declarative diagrams (flowchart / sequence / state / class / ER / gantt / mindmap) and data-driven visualizations (bar / line / scatter / network / hierarchy / geo). Correct-by-construction (validated before render) and portable (SVG / PNG / PDF via a discovered headless renderer). Not for: shipping or assuming a vendor render server (the renderer is discovered, never bundled); fabricating a visualization's dataset (supplied or discovered, never invented); illustrating non-structural prose a paragraph already carries. Harness-agnostic; deterministic output."
|
|
6
|
+
archetype: "authoring-template"
|
|
7
|
+
userInvocable: true
|
|
8
|
+
argument-hint: "[diagram subject] [--notation auto|declarative|data-driven] [--format svg|png|pdf]"
|
|
9
|
+
disable-model-invocation: true
|
|
10
|
+
allowed-tools: "Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Author a structural picture — a flowchart, sequence, state machine, class / ER model, gantt, mindmap, or a data-driven visualization (bar, line, scatter, network, hierarchy, geographic) — and render it to a shareable image through one deterministic pipeline:
|
|
18
|
+
|
|
19
|
+
**pick the notation from the subject → author the source → validate the syntax → render → export.**
|
|
20
|
+
|
|
21
|
+
The skill unifies declarative diagram authoring and data-driven visualization behind a single procedure and a single validate-then-render contract, so a diagram is **correct-by-construction** (validated before render) and **portable** (exported to SVG / PNG / PDF) regardless of which notation the subject called for.
|
|
22
|
+
|
|
23
|
+
## Detection Signal
|
|
24
|
+
|
|
25
|
+
The operator asks to "draw / author a diagram", names a diagram class (flowchart, sequence, state, class, ER, gantt, mindmap, architecture), asks for a "data visualization" / "chart" / "graph" of a dataset, asks to "render" diagram source to an image, or asks to "export" a diagram to a file format. A request to embed a diagram inside a structural document also routes here (the `document-authoring` skill consumes this skill's render output).
|
|
26
|
+
|
|
27
|
+
## Non-Goals
|
|
28
|
+
|
|
29
|
+
- **Not a bundled rendering server.** A deterministic procedure that invokes whatever diagram renderer the host makes available (a headless diagram CLI, a headless browser, or a render service in the MCP inventory) — it ships or assumes no specific vendor's server. The renderer is discovered, not bundled.
|
|
30
|
+
- **Not a notation monoculture.** It selects the right notation for the subject — declarative diagram grammar for relationship / flow / state pictures, a data-viz grammar for quantitative pictures — never forcing one notation onto every subject.
|
|
31
|
+
- **Not an unvalidated emitter.** Diagram source is syntax-validated before render; a render of invalid source is a failure surfaced with the offending construct, not a silently-broken image.
|
|
32
|
+
|
|
33
|
+
## Conformity Posture
|
|
34
|
+
|
|
35
|
+
- **Discover-don't-assume preamble (M1).** Discover the host's available diagram renderer and its invocation (a headless diagram CLI on PATH, a headless browser, or an MCP-registered render service) per `rules/host-discovery.md`, and the host's diagram-asset directory convention. Record each with provenance. The renderer is never assumed — it is discovered, and where absent the gap is surfaced.
|
|
36
|
+
- **Visual-leverage alignment (M9).** Authored diagrams carry the provenance + `verified:` date metadata per `rules/visual-leverage.md`, so the picture reflects current reality, not aspirational or stale state.
|
|
37
|
+
|
|
38
|
+
## Procedure
|
|
39
|
+
|
|
40
|
+
### 1. Frame the Subject & Pick the Notation
|
|
41
|
+
|
|
42
|
+
Read the subject and classify it:
|
|
43
|
+
|
|
44
|
+
| Subject class | Notation family | Members |
|
|
45
|
+
|---------------|-----------------|---------|
|
|
46
|
+
| relationship / flow / state / structure | declarative diagram grammar | flowchart, sequence, state, class, ER, gantt, mindmap |
|
|
47
|
+
| quantitative / dataset | data-viz grammar | bar, line, scatter, network, hierarchy, geographic |
|
|
48
|
+
|
|
49
|
+
Under `--notation auto` (default) the classification is by subject; when ambiguous, inquire. Record the chosen notation and why.
|
|
50
|
+
|
|
51
|
+
### 2. Author the Diagram Source
|
|
52
|
+
|
|
53
|
+
Author the source in the chosen notation, derived from the subject's intent (the structure to depict, the data to plot). For data-driven visualizations, bind the supplied / discovered dataset to the visual encoding (axes, scales, marks, color) **deterministically** — the same dataset produces the same picture. Keep the source human-readable and diffable (text source over binary where the notation permits).
|
|
54
|
+
|
|
55
|
+
### 3. Validate Before Render
|
|
56
|
+
|
|
57
|
+
Validate the source syntax before any render — parse the declarative grammar or the data-viz spec. On a parse error, surface the offending construct and halt; never render invalid source into a broken image. This validate-then-render contract is the skill's robustness floor.
|
|
58
|
+
|
|
59
|
+
### 4. Render & Export
|
|
60
|
+
|
|
61
|
+
Render the validated source to an image via the discovered renderer; export to the requested `--format`:
|
|
62
|
+
|
|
63
|
+
- **SVG** (default) — scalable, diffable.
|
|
64
|
+
- **PNG** — raster embedding.
|
|
65
|
+
- **PDF** — print.
|
|
66
|
+
|
|
67
|
+
When the render reports a *recoverable* error (a layout overflow, an unsupported construct), apply **one** corrective pass (adjust the construct → re-validate → re-render) before surfacing failure — a bounded validate→correct→re-render loop, never unbounded retry.
|
|
68
|
+
|
|
69
|
+
### 5. Self-Check & Emit
|
|
70
|
+
|
|
71
|
+
Attach the provenance + `verified:` metadata. Run the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against the emitted source + image. Emit the diagram source, the rendered image, and the single recommended next move.
|
|
72
|
+
|
|
73
|
+
## Arguments
|
|
74
|
+
|
|
75
|
+
- `[diagram subject]` — the structure or dataset to depict, in natural language.
|
|
76
|
+
- `--notation auto|declarative|data-driven` — notation family (default: `auto`, classified by subject).
|
|
77
|
+
- `--format svg|png|pdf` — export format (default: `svg`).
|
|
78
|
+
|
|
79
|
+
## Return Contract
|
|
80
|
+
|
|
81
|
+
The diagram **source** (text, diffable, with provenance + `verified:` metadata), the rendered **image** at the chosen format, the **notation choice + rationale**, and a single `## Recommended Next Step`. Deterministic per `rules/determinism.md`: the same subject + dataset + notation produces byte-stable source and a reproducible render. The rendered binary's exact bytes may vary with the discovered renderer version — the declared non-deterministic element, stamped with the renderer + version.
|
|
82
|
+
|
|
83
|
+
## Foundational Stanzas
|
|
84
|
+
|
|
85
|
+
The four standing surfaces every operator inherits per the canonical project voice at `AGENTS.md` plus the active harness mirror.
|
|
86
|
+
|
|
87
|
+
### Refusal & Escalation
|
|
88
|
+
|
|
89
|
+
REFUSE any request beyond authoring and rendering a diagram — name what was refused, name the boundary crossed, surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md`. REFUSE emitting an image from source that failed syntax validation — surface the validation error and the offending construct instead. When the subject is ambiguous between two notations, surface the choice; never guess.
|
|
90
|
+
|
|
91
|
+
### Output Surface
|
|
92
|
+
|
|
93
|
+
Diagram source and rendered images land at the operator's chosen location (a structural document's asset directory, a plan suite's working surface, or an operator-named path) per host-discovery and the suite-locality invariant at `rules/context-management.md` §2.6.1. Diagram source carries a provenance + verification-date comment per `rules/visual-leverage.md` so the rendered picture is auditable against the reality it abstracts. Per CM-7, the diagram describes its subject in natural domain language.
|
|
94
|
+
|
|
95
|
+
### File-Authoring Contract
|
|
96
|
+
|
|
97
|
+
Diagram-source files (a `.mmd` / `.svg` / data-viz spec) authored as host-project artifacts route through `scripts/inject-header.{sh,py}` where the filetype carries a header variant; rendered binary images (`.png` / `.pdf`) are header-exempt per `src/apothem/schemas/header-exceptions.txt`. Edits preserve any existing banner; the header-inject-guard hook enforces the contract.
|
|
98
|
+
|
|
99
|
+
### Structured Inquiry on Ambiguity
|
|
100
|
+
|
|
101
|
+
When the notation, the diagram class, the dataset shape, the target format, or the rendering surface is ambiguous, route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3. NEVER fabricate the data a visualization plots — the dataset is supplied or discovered, never invented.
|
|
102
|
+
|
|
103
|
+
## Recommended Next Step
|
|
104
|
+
|
|
105
|
+
**Invoke the `diagram-authoring` skill via the Skill tool** with `<subject> --notation auto --format svg` — review the validated source and the rendered SVG, then embed the source (not just the image) in the consuming document so the picture stays diffable and re-renderable. Re-run with `--notation` set explicitly when the subject spans both a structural and a quantitative view.
|
|
106
|
+
|
|
107
|
+
## Bindings (§0.j five-direction)
|
|
108
|
+
|
|
109
|
+
- **Drives →** ● Every authored-and-rendered diagram across the host's structural artifacts. ● The validate-then-render contract that gates every image emission. ◐ The document-authoring skill, which consumes this skill's render output for embedded figures.
|
|
110
|
+
- **Satisfies →** ● `CLAUDE.md` Source Layout row "diagram-authoring" (skills/ class). ● The elevation dimension **structural novelty** (one unified author→validate→render→export pipeline across declarative + data-driven notation — a shape no single source capability carries alone). ● `rules/visual-leverage.md` (M9 diagram provenance + verification-date discipline).
|
|
111
|
+
- **Established by ↑** ● `CLAUDE.md` Source Layout (skills/ folder-with-`SKILL.md` class). ● `CLAUDE.md` Ambiguity Handling (structured inquiry over fabrication). ● `rules/own-voice-reimplementation.md` (zero-verbatim own-voice; `reference-token-grep` = 0). ● `rules/agnostic-posture.md` (17-harness agnostic floor).
|
|
112
|
+
- **Gated by ←** ● A discovered diagram renderer (the gap is surfaced where absent). ● The host's structured-inquiry + Edit + Write + Bash tool surface. ● A statable subject (and, for data-viz, a supplied / discovered dataset — never invented).
|
|
113
|
+
- **Cross-bound with ↔** ↔ `rules/visual-leverage.md` (M9 — provenance + `verified:` metadata; this skill is the authoring instrument for the diagrams that rule mandates). ↔ `rules/own-voice-reimplementation.md` + `rules/agnostic-posture.md` (own-voice + agnostic floors). ↔ `rules/determinism.md` (deterministic pipeline). ↔ `skills/document-authoring/SKILL.md` (sibling own-voice authoring skill; consumes this skill's render output for embedded figures).
|