coding-os 0.3.2__py3-none-any.whl
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.
- adapters/claude/README.md +6 -0
- adapters/claude/_install_helpers/extract_stacks.py +43 -0
- adapters/claude/_install_helpers/update_mcp_json.py +75 -0
- adapters/claude/adapter.yaml +164 -0
- adapters/claude/hooks/README.md +40 -0
- adapters/claude/hooks/agent_memory_sync.py +131 -0
- adapters/claude/hooks/ensure-agent-memory-link.sh +36 -0
- adapters/claude/hooks/sync-agent-memory.sh +21 -0
- adapters/claude/install.sh +86 -0
- adapters/claude/sdk_dispatcher.py +871 -0
- adapters/claude/settings.local.template.json +31 -0
- adapters/claude/settings.template.json +808 -0
- adapters/claude/update_mcp_json.py +85 -0
- adapters/codex/adapter.yaml +254 -0
- adapters/codex/chat_provider.py +230 -0
- adapters/codex/commands/formula-f1.md +129 -0
- adapters/codex/commands/formula-f10.md +100 -0
- adapters/codex/commands/formula-f11.md +123 -0
- adapters/codex/commands/formula-f2.md +139 -0
- adapters/codex/commands/formula-f3.md +127 -0
- adapters/codex/commands/formula-f4.md +101 -0
- adapters/codex/commands/formula-f5.md +135 -0
- adapters/codex/commands/formula-f6.md +147 -0
- adapters/codex/commands/formula-f7.md +111 -0
- adapters/codex/commands/formula-f8.md +133 -0
- adapters/codex/commands/formula-f9.md +112 -0
- adapters/codex/enable_codex_hooks.py +94 -0
- adapters/codex/ensure_codex_mcp.py +124 -0
- adapters/codex/hooks/codex-merge-hook-output.py +72 -0
- adapters/codex/hooks/codex-normalize-edit.py +96 -0
- adapters/codex/hooks/codex-postedit-dispatch.sh +75 -0
- adapters/codex/hooks/codex-posttool-dispatch.sh +70 -0
- adapters/codex/hooks/codex-preedit-dispatch.sh +83 -0
- adapters/codex/hooks/codex-pretool-dispatch.sh +82 -0
- adapters/codex/hooks/codex-sessionend-dispatch.sh +20 -0
- adapters/codex/hooks/codex-sessionstart-dispatch.sh +68 -0
- adapters/codex/hooks/codex-stop-dispatch.sh +73 -0
- adapters/codex/hooks/codex-userpromptsubmit-dispatch.sh +74 -0
- adapters/codex/hooks.template.json +208 -0
- adapters/codex/install.sh +83 -0
- adapters/codex/sdk_dispatcher.py +449 -0
- board_os/__init__.py +39 -0
- board_os/_agent_runtime.py +256 -0
- board_os/config.py +421 -0
- board_os/git_coherence.py +107 -0
- board_os/hub_adapter_manifest.py +140 -0
- board_os/mcp_tools.py +3228 -0
- board_os/migration.py +166 -0
- board_os/parser.py +317 -0
- board_os/presence.py +156 -0
- board_os/sync.py +320 -0
- board_os/transition_gates.py +224 -0
- board_os/transition_gates_cli.py +272 -0
- board_os/transition_gates_validator.py +551 -0
- board_os/verify_suites.py +126 -0
- board_os/verify_suites_cli.py +328 -0
- board_os/workflow.py +967 -0
- cli/__init__.py +0 -0
- cli/_data_types.py +248 -0
- cli/_init_helpers.py +587 -0
- cli/_resources.py +100 -0
- cli/adapter_registry.py +239 -0
- cli/add_stack.py +315 -0
- cli/aggregator.py +438 -0
- cli/board_commands.py +1218 -0
- cli/brain_commands.py +255 -0
- cli/cognition.py +345 -0
- cli/config_composer.py +349 -0
- cli/core_version.py +41 -0
- cli/cron_commands.py +278 -0
- cli/db_reset.py +298 -0
- cli/doc_commands.py +111 -0
- cli/doctor.py +2953 -0
- cli/doctor_board.py +365 -0
- cli/doctor_extras.py +1121 -0
- cli/doctor_graph.py +608 -0
- cli/doctor_tokens.py +254 -0
- cli/graph_commands.py +1265 -0
- cli/hook_renderer.py +393 -0
- cli/hub_commands.py +580 -0
- cli/list_adapters.py +79 -0
- cli/list_stacks.py +105 -0
- cli/logs_commands.py +89 -0
- cli/main.py +3070 -0
- cli/materialize_file.py +65 -0
- cli/mcp_start.py +153 -0
- cli/module_commands.py +513 -0
- cli/pr_commands.py +2024 -0
- cli/preset_commands.py +126 -0
- cli/preset_registry.py +171 -0
- cli/project_overrides.py +119 -0
- cli/registry.py +365 -0
- cli/remove_stack.py +492 -0
- cli/renderer.py +620 -0
- cli/setup.py +464 -0
- cli/skill_commands.py +689 -0
- cli/skill_registry.py +235 -0
- cli/skills_list.py +332 -0
- cli/stack_lint.py +351 -0
- cli/stack_registry.py +688 -0
- cli/subsystems.py +335 -0
- cli/sync_all.py +310 -0
- cli/tail_command.py +410 -0
- cli/update.py +608 -0
- cli/verify_since_edit.py +439 -0
- coding_os-0.3.2.dist-info/METADATA +508 -0
- coding_os-0.3.2.dist-info/RECORD +1304 -0
- coding_os-0.3.2.dist-info/WHEEL +5 -0
- coding_os-0.3.2.dist-info/entry_points.txt +5 -0
- coding_os-0.3.2.dist-info/licenses/LICENSE +201 -0
- coding_os-0.3.2.dist-info/top_level.txt +10 -0
- core/__init__.py +0 -0
- core/board_os/__init__.py +39 -0
- core/board_os/_agent_runtime.py +256 -0
- core/board_os/config.py +421 -0
- core/board_os/git_coherence.py +107 -0
- core/board_os/hub_adapter_manifest.py +140 -0
- core/board_os/mcp_tools.py +3228 -0
- core/board_os/migration.py +166 -0
- core/board_os/parser.py +317 -0
- core/board_os/presence.py +156 -0
- core/board_os/sync.py +320 -0
- core/board_os/transition-gates.yaml +176 -0
- core/board_os/transition_gates.py +224 -0
- core/board_os/transition_gates_cli.py +272 -0
- core/board_os/transition_gates_validator.py +551 -0
- core/board_os/verify-suites.yaml +113 -0
- core/board_os/verify_suites.py +126 -0
- core/board_os/verify_suites_cli.py +328 -0
- core/board_os/workflow.py +967 -0
- core/commands/board.md +27 -0
- core/commands/classify.md +23 -0
- core/commands/compose.md +23 -0
- core/commands/daily.md +31 -0
- core/commands/diagnose.md +7 -0
- core/commands/memory-search.md +23 -0
- core/commands/new-project.md +33 -0
- core/commands/retro.md +38 -0
- core/commands/review.md +14 -0
- core/commands/task.md +17 -0
- core/commands/verify.md +34 -0
- core/docs/thinking_os-final-edition.md +1449 -0
- core/doctor-config.yaml +74 -0
- core/graph_os/__init__.py +29 -0
- core/graph_os/backend.py +233 -0
- core/graph_os/backends/__init__.py +13 -0
- core/graph_os/backends/sqlite_backend.py +1053 -0
- core/graph_os/bench/__init__.py +17 -0
- core/graph_os/bench/fixtures.py +56 -0
- core/graph_os/bench/harness.py +95 -0
- core/graph_os/bench/persian_precision.py +142 -0
- core/graph_os/bench/scale_500k.py +120 -0
- core/graph_os/bench/token_cost.py +170 -0
- core/graph_os/bench/viewer_fps.py +110 -0
- core/graph_os/communities.py +410 -0
- core/graph_os/enterprise.py +218 -0
- core/graph_os/entry_points.py +226 -0
- core/graph_os/extractors/__init__.py +25 -0
- core/graph_os/extractors/code_generic.py +914 -0
- core/graph_os/extractors/code_go.py +1422 -0
- core/graph_os/extractors/code_json.py +340 -0
- core/graph_os/extractors/code_php.py +979 -0
- core/graph_os/extractors/code_python.py +1454 -0
- core/graph_os/extractors/code_shell.py +538 -0
- core/graph_os/extractors/code_toml.py +302 -0
- core/graph_os/extractors/code_ts.py +1665 -0
- core/graph_os/extractors/code_yaml.py +394 -0
- core/graph_os/extractors/contracts.py +1592 -0
- core/graph_os/extractors/md_links.py +890 -0
- core/graph_os/extractors/task_deps.py +345 -0
- core/graph_os/groups/__init__.py +22 -0
- core/graph_os/groups/cross_repo.py +156 -0
- core/graph_os/groups/manifest.py +141 -0
- core/graph_os/ingest/__init__.py +19 -0
- core/graph_os/ingest/base.py +306 -0
- core/graph_os/ingest/github.py +112 -0
- core/graph_os/ingest/zip.py +95 -0
- core/graph_os/toolchain.py +393 -0
- core/graph_os/tools/__init__.py +9 -0
- core/graph_os/tools/graph.py +5573 -0
- core/graph_os/tools/reindex_dispatch.py +730 -0
- core/graph_os/tree_sitter_overlay.py +235 -0
- core/graph_os/types.py +252 -0
- core/graph_os/vec_index.py +277 -0
- core/graph_os/viewer/__init__.py +12 -0
- core/graph_os/viewer/exporter.py +93 -0
- core/graph_os/viewer/template.py +189 -0
- core/hooks/_helpers/_paths.py +40 -0
- core/hooks/_helpers/advance_role.py +72 -0
- core/hooks/_helpers/auto_compose.py +228 -0
- core/hooks/_helpers/auto_validate_lessons.py +55 -0
- core/hooks/_helpers/branch_guard_check.py +796 -0
- core/hooks/_helpers/check_commit_message.py +108 -0
- core/hooks/_helpers/check_dangerous_rm.py +80 -0
- core/hooks/_helpers/check_git_bypass.py +154 -0
- core/hooks/_helpers/check_git_destructive.py +77 -0
- core/hooks/_helpers/check_settings_write.py +97 -0
- core/hooks/_helpers/consume_override.py +51 -0
- core/hooks/_helpers/context_budget.py +77 -0
- core/hooks/_helpers/cos_say_json.py +103 -0
- core/hooks/_helpers/destructive_edit_check.py +163 -0
- core/hooks/_helpers/detect_status_transition.py +82 -0
- core/hooks/_helpers/digest_regen.py +56 -0
- core/hooks/_helpers/doc_sync_check.py +498 -0
- core/hooks/_helpers/drain_embedding_outbox.py +52 -0
- core/hooks/_helpers/extract_additional_context.py +51 -0
- core/hooks/_helpers/extract_commit_msg_arg.py +74 -0
- core/hooks/_helpers/git_command_parse.py +424 -0
- core/hooks/_helpers/git_settings_fields.py +47 -0
- core/hooks/_helpers/graph_context_match.py +37 -0
- core/hooks/_helpers/graph_marker_check.py +70 -0
- core/hooks/_helpers/jit_recall.py +56 -0
- core/hooks/_helpers/json_field.py +41 -0
- core/hooks/_helpers/narrative_signal.py +59 -0
- core/hooks/_helpers/observation_count.py +31 -0
- core/hooks/_helpers/pre_commit_batch.py +177 -0
- core/hooks/_helpers/pre_commit_fake_input.py +42 -0
- core/hooks/_helpers/presence_gc.py +102 -0
- core/hooks/_helpers/presence_write.py +167 -0
- core/hooks/_helpers/recover_indirect.py +35 -0
- core/hooks/_helpers/routing_evolution.py +104 -0
- core/hooks/_helpers/session_recap.py +72 -0
- core/hooks/_helpers/skill_primer.py +229 -0
- core/hooks/_helpers/task_sync.py +59 -0
- core/hooks/_helpers/tool_failure_capture.py +147 -0
- core/hooks/_helpers/trajectory_autosnap.py +278 -0
- core/hooks/_helpers/trajectory_startup.py +62 -0
- core/hooks/_helpers/turn_summary.py +82 -0
- core/hooks/_helpers/validate_task_frontmatter.py +98 -0
- core/hooks/_helpers/wip_limit_check.py +103 -0
- core/hooks/_helpers/wip_lines.py +53 -0
- core/hooks/_helpers/work_log_append.py +89 -0
- core/hooks/_helpers/wrap_dispatch_output.py +82 -0
- core/hooks/advance-role.sh +48 -0
- core/hooks/agent-presence.sh +179 -0
- core/hooks/auto-brain-decay.sh +184 -0
- core/hooks/auto-compose-roles.sh +83 -0
- core/hooks/auto-graph-reconcile-shell.sh +119 -0
- core/hooks/auto-regen-doc-index.sh +120 -0
- core/hooks/auto-reindex-docs.sh +130 -0
- core/hooks/auto-task-sync.sh +56 -0
- core/hooks/auto-trace-rotate.sh +88 -0
- core/hooks/block-bad-patterns.sh +212 -0
- core/hooks/block-dangerous-commands.sh +182 -0
- core/hooks/block-hardcoded-literals.sh +90 -0
- core/hooks/block-migration-conflict.sh +114 -0
- core/hooks/block-protected-files.sh +129 -0
- core/hooks/block-secrets.sh +185 -0
- core/hooks/block-shared-tree-edit.sh +75 -0
- core/hooks/block-uv-heredoc.sh +78 -0
- core/hooks/branch-guard.sh +122 -0
- core/hooks/capture-observation.sh +76 -0
- core/hooks/capture-tool-failure.sh +24 -0
- core/hooks/capture-work-log.sh +89 -0
- core/hooks/check-agents-md-refs.sh +75 -0
- core/hooks/check-agents-md-size.sh +49 -0
- core/hooks/check-capture-worked.sh +148 -0
- core/hooks/check-doc-size.sh +61 -0
- core/hooks/check-mcp-extras.sh +92 -0
- core/hooks/check-state.sh +87 -0
- core/hooks/classify-task-mode.sh +103 -0
- core/hooks/cos-env.sh +1301 -0
- core/hooks/drain-embedding-outbox.sh +24 -0
- core/hooks/enforce-anti-ambiguity.sh +74 -0
- core/hooks/enforce-commit-message.sh +73 -0
- core/hooks/enforce-doc-anchor.sh +224 -0
- core/hooks/enforce-doc-sync.sh +206 -0
- core/hooks/enforce-graph-context.sh +89 -0
- core/hooks/enforce-graph-first-read.sh +94 -0
- core/hooks/enforce-memory-check.sh +128 -0
- core/hooks/enforce-rename-plan.sh +78 -0
- core/hooks/enforce-scaffold-boundary.sh +68 -0
- core/hooks/enforce-skill.sh +125 -0
- core/hooks/enforce-task-body.sh +52 -0
- core/hooks/enforce-task-start.sh +81 -0
- core/hooks/enforce-task-transition.sh +75 -0
- core/hooks/enforce-template.sh +143 -0
- core/hooks/enforce-verify.sh +112 -0
- core/hooks/enforce-wip-limit.sh +43 -0
- core/hooks/enforce-zoom.sh +69 -0
- core/hooks/ensure-hub-up.sh +67 -0
- core/hooks/inject-mcp-caller-session.sh +70 -0
- core/hooks/jit-recall.sh +65 -0
- core/hooks/link-commit-to-task.sh +143 -0
- core/hooks/lint-task.sh +40 -0
- core/hooks/nudge-docs-first.sh +71 -0
- core/hooks/nudge-git-mode.sh +29 -0
- core/hooks/nudge-graph-os.sh +118 -0
- core/hooks/nudge-learn-narrative.sh +36 -0
- core/hooks/nudge-model-routing.sh +32 -0
- core/hooks/nudge-reentry.sh +101 -0
- core/hooks/nudge-reuse-first.sh +68 -0
- core/hooks/nudge-task-discovery.sh +81 -0
- core/hooks/nudge-thinking-os.sh +109 -0
- core/hooks/pr-reap.sh +23 -0
- core/hooks/reclaim-sweep.sh +58 -0
- core/hooks/record-verify-auto.sh +77 -0
- core/hooks/record-verify.sh +74 -0
- core/hooks/regen-reminder.sh +104 -0
- core/hooks/registry.yaml +1262 -0
- core/hooks/remind-daily.sh +27 -0
- core/hooks/remind-dogfood.sh +70 -0
- core/hooks/remind-learn-validate.sh +94 -0
- core/hooks/rules-primer.sh +50 -0
- core/hooks/search-enforce-inventory.sh +108 -0
- core/hooks/search-verify-remaining.sh +132 -0
- core/hooks/session-context.sh +729 -0
- core/hooks/session-end.sh +145 -0
- core/hooks/session-skill-primer.sh +43 -0
- core/hooks/snapshot-transcript.sh +56 -0
- core/hooks/sync-task-current.sh +85 -0
- core/hooks/test-first-reminder.sh +120 -0
- core/hooks/test-governor.sh +173 -0
- core/hooks/thinking_os-gate.sh +52 -0
- core/hooks/track-backtrack.sh +35 -0
- core/hooks/track-discovery.sh +121 -0
- core/hooks/track-skill.sh +53 -0
- core/hooks/validate-task-frontmatter.sh +49 -0
- core/hooks/verify-rename-callers.sh +119 -0
- core/hooks/warn-abandoned-task.sh +99 -0
- core/hooks/warn-destructive-edit.sh +64 -0
- core/hooks/warn-diff-size.sh +43 -0
- core/hooks/warn-graph-empty.sh +81 -0
- core/hooks/warn-mcp-down.sh +190 -0
- core/hooks/write-state.sh +55 -0
- core/logging_os/__init__.py +33 -0
- core/logging_os/api.py +127 -0
- core/logging_os/bridge.py +80 -0
- core/logging_os/config.py +172 -0
- core/logging_os/fingerprint.py +25 -0
- core/logging_os/redact.py +53 -0
- core/logging_os/render.py +83 -0
- core/logging_os/sinks.py +164 -0
- core/rules/anti-overengineering.md +44 -0
- core/rules/api-contract-discipline.md +41 -0
- core/rules/dimension-registry.md +155 -0
- core/rules/git-workflow.md +57 -0
- core/rules/memory.md +46 -0
- core/rules/model-routing.md +22 -0
- core/rules/skill-enforcement.md +75 -0
- core/rules/test-discipline.md +38 -0
- core/rules/thinking_os.md +48 -0
- core/rules/transparency-banner.md +37 -0
- core/runtime_paths.yaml +36 -0
- core/scaffold_manifest.json +14430 -0
- core/scheduled/__init__.py +0 -0
- core/scheduled/_activity.py +126 -0
- core/scheduled/_state.py +113 -0
- core/scheduled/config.py +86 -0
- core/scheduled/dep_reconcile.py +135 -0
- core/scheduled/error_sweep.py +137 -0
- core/scheduled/nightly.py +930 -0
- core/scheduled/responsive_extract.py +65 -0
- core/schemas/adapter.schema.json +269 -0
- core/schemas/preset.schema.json +50 -0
- core/schemas/skill.schema.json +81 -0
- core/schemas/stack.schema.json +404 -0
- core/scripts/_lib.sh +9 -0
- core/scripts/docs-lint.sh +228 -0
- core/scripts/docs-nav-fix.sh +133 -0
- core/scripts/docs-staleness-check.sh +154 -0
- core/scripts/install-adapter.sh +266 -0
- core/scripts/link-stack-skills.sh +52 -0
- core/scripts/log-latest.sh +106 -0
- core/scripts/log-search.sh +89 -0
- core/scripts/log-write.sh +134 -0
- core/scripts/ref-resolve.sh +71 -0
- core/skills/a11y/SKILL.md +305 -0
- core/skills/a11y/assets/a11y-checklist.md +137 -0
- core/skills/a11y/references/aria-and-focus.md +247 -0
- core/skills/a11y/references/rn-accessibility.md +343 -0
- core/skills/a11y/references/screen-reader-testing.md +190 -0
- core/skills/agent-memory/SKILL.md +191 -0
- core/skills/agent-memory/assets/memory-checklist.md +21 -0
- core/skills/agent-memory/references/memory-recipes.md +57 -0
- core/skills/api-design/SKILL.md +232 -0
- core/skills/api-design/assets/api-design-checklist.md +110 -0
- core/skills/api-design/references/error-envelope.md +381 -0
- core/skills/api-design/references/idempotency-pagination.md +312 -0
- core/skills/api-design/references/rest-contracts.md +426 -0
- core/skills/auth-patterns/SKILL.md +352 -0
- core/skills/auth-patterns/assets/auth-checklist.md +118 -0
- core/skills/auth-patterns/references/jwt-and-service-tokens.md +343 -0
- core/skills/auth-patterns/references/passkeys-2fa.md +289 -0
- core/skills/auth-patterns/references/sessions-vs-jwt.md +230 -0
- core/skills/auth-patterns/scripts/cookie-flag-check.py +146 -0
- core/skills/backend-fundamentals/SKILL.md +238 -0
- core/skills/backend-fundamentals/assets/backend-checklist.md +27 -0
- core/skills/backend-fundamentals/references/backend-patterns.md +56 -0
- core/skills/backend-fundamentals/scripts/check_layering.py +83 -0
- core/skills/clean-code/SKILL.md +642 -0
- core/skills/clean-code/scripts/audit-fail-closed.py +167 -0
- core/skills/codebase-explorer/SKILL.md +89 -0
- core/skills/codebase-explorer/assets/reading-checklist.md +24 -0
- core/skills/codebase-explorer/references/reading-strategies.md +52 -0
- core/skills/codebase-explorer/scripts/outline.py +99 -0
- core/skills/db-design/SKILL.md +327 -0
- core/skills/db-design/assets/migration-template.sql +49 -0
- core/skills/db-design/references/migration-discipline.md +290 -0
- core/skills/db-design/references/postgres-patterns.md +340 -0
- core/skills/db-design/scripts/migration-safety.sh +150 -0
- core/skills/deployment-cicd/SKILL.md +260 -0
- core/skills/deployment-cicd/assets/deploy-checklist.md +26 -0
- core/skills/deployment-cicd/references/pipeline-and-release.md +54 -0
- core/skills/deployment-cicd/scripts/lint_workflow.py +79 -0
- core/skills/docker/SKILL.md +114 -0
- core/skills/docker/assets/dockerfile-checklist.md +31 -0
- core/skills/docker/references/compose-patterns.md +66 -0
- core/skills/docker/references/dockerfile-optimization.md +64 -0
- core/skills/docker/scripts/lint_dockerfile.sh +48 -0
- core/skills/docker/versions.json +16 -0
- core/skills/end-to-end-testing/SKILL.md +101 -0
- core/skills/end-to-end-testing/assets/e2e-checklist.md +23 -0
- core/skills/end-to-end-testing/references/maestro.md +63 -0
- core/skills/end-to-end-testing/references/playwright.md +68 -0
- core/skills/end-to-end-testing/scripts/lint_e2e.py +88 -0
- core/skills/end-to-end-testing/versions.json +16 -0
- core/skills/frontend-design/SKILL.md +76 -0
- core/skills/frontend-design/assets/design-checklist.md +29 -0
- core/skills/frontend-design/references/design-principles.md +65 -0
- core/skills/frontend-design/scripts/check_contrast.py +89 -0
- core/skills/frontend-fundamentals/SKILL.md +213 -0
- core/skills/frontend-fundamentals/assets/frontend-checklist.md +25 -0
- core/skills/frontend-fundamentals/references/rendering-and-state.md +66 -0
- core/skills/frontend-fundamentals/scripts/check_frontend.py +86 -0
- core/skills/graph-explorer/SKILL.md +215 -0
- core/skills/graph-explorer/scripts/explain-impact.sh +64 -0
- core/skills/graphql/SKILL.md +187 -0
- core/skills/grpc-microservices/SKILL.md +174 -0
- core/skills/hexagonal-architecture/SKILL.md +199 -0
- core/skills/hexagonal-architecture/assets/folder-scaffold.md +233 -0
- core/skills/hexagonal-architecture/references/anti-patterns.md +129 -0
- core/skills/hexagonal-architecture/references/go-fiber-layout.md +429 -0
- core/skills/hexagonal-architecture/references/python-fastapi-layout.md +453 -0
- core/skills/hexagonal-architecture/references/react-native-layout.md +428 -0
- core/skills/i18n/SKILL.md +126 -0
- core/skills/incident-response/SKILL.md +225 -0
- core/skills/incident-response/assets/incident-checklist.md +29 -0
- core/skills/incident-response/references/severity-and-runbook.md +53 -0
- core/skills/incident-response/scripts/classify_severity.py +86 -0
- core/skills/linux-sysadmin/SKILL.md +115 -0
- core/skills/linux-sysadmin/assets/hardening-checklist.md +29 -0
- core/skills/linux-sysadmin/references/ssh-hardening.md +62 -0
- core/skills/linux-sysadmin/references/systemd-and-services.md +77 -0
- core/skills/linux-sysadmin/scripts/triage.sh +50 -0
- core/skills/linux-sysadmin/versions.json +17 -0
- core/skills/llm-patterns/SKILL.md +410 -0
- core/skills/llm-patterns/assets/llm-feature-checklist.md +26 -0
- core/skills/llm-patterns/references/rag-and-evals.md +59 -0
- core/skills/llm-patterns/scripts/estimate_tokens.py +75 -0
- core/skills/messaging-queues/SKILL.md +142 -0
- core/skills/mobile-fundamentals/SKILL.md +406 -0
- core/skills/mobile-fundamentals/assets/mobile-launch-checklist.md +130 -0
- core/skills/mobile-fundamentals/references/navigation-and-deep-links.md +337 -0
- core/skills/mobile-fundamentals/references/offline-sync.md +339 -0
- core/skills/node-backend/SKILL.md +114 -0
- core/skills/node-backend/assets/node-checklist.md +25 -0
- core/skills/node-backend/references/async-and-errors.md +67 -0
- core/skills/node-backend/references/event-loop.md +65 -0
- core/skills/node-backend/scripts/check_package.py +78 -0
- core/skills/node-backend/versions.json +17 -0
- core/skills/observability/SKILL.md +289 -0
- core/skills/observability/assets/observability-checklist.md +27 -0
- core/skills/observability/references/instrumentation.md +57 -0
- core/skills/observability/scripts/lint_logging.py +77 -0
- core/skills/payments/SKILL.md +102 -0
- core/skills/performance/SKILL.md +305 -0
- core/skills/performance/assets/perf-checklist.md +143 -0
- core/skills/performance/references/mobile-performance.md +249 -0
- core/skills/performance/references/web-vitals.md +209 -0
- core/skills/php/SKILL.md +116 -0
- core/skills/php/assets/php-checklist.md +26 -0
- core/skills/php/references/modern-php.md +64 -0
- core/skills/php/references/security.md +72 -0
- core/skills/php/scripts/scan_php_smells.py +99 -0
- core/skills/php/versions.json +9 -0
- core/skills/pr-mode-driver/SKILL.md +65 -0
- core/skills/realtime-websockets/SKILL.md +152 -0
- core/skills/redis/SKILL.md +105 -0
- core/skills/redis/assets/redis-checklist.md +27 -0
- core/skills/redis/references/operations.md +66 -0
- core/skills/redis/references/patterns.md +62 -0
- core/skills/redis/scripts/analyze_info.py +101 -0
- core/skills/redis/versions.json +9 -0
- core/skills/search/SKILL.md +91 -0
- core/skills/search/references/grep.md +76 -0
- core/skills/search/scripts/verify-count.sh +73 -0
- core/skills/search-infra/SKILL.md +109 -0
- core/skills/security-mobile/SKILL.md +394 -0
- core/skills/security-mobile/assets/mobile-security-checklist.md +117 -0
- core/skills/security-mobile/references/masvs-l1-checklist.md +127 -0
- core/skills/security-web/SKILL.md +217 -0
- core/skills/security-web/assets/security-web-checklist.md +167 -0
- core/skills/security-web/references/owasp-top-10.md +551 -0
- core/skills/security-web/references/supply-chain.md +179 -0
- core/skills/security-web/scripts/csp-check.sh +153 -0
- core/skills/shell-scripting/SKILL.md +128 -0
- core/skills/shell-scripting/assets/script-checklist.md +33 -0
- core/skills/shell-scripting/references/argument-parsing.md +84 -0
- core/skills/shell-scripting/references/bash-robustness.md +78 -0
- core/skills/shell-scripting/scripts/lint_script.sh +53 -0
- core/skills/shell-scripting/scripts/new_script.py +131 -0
- core/skills/shell-scripting/versions.json +23 -0
- core/skills/sql-authoring/SKILL.md +104 -0
- core/skills/sql-authoring/assets/query-review-checklist.md +26 -0
- core/skills/sql-authoring/references/query-patterns.md +89 -0
- core/skills/sql-authoring/references/reading-explain.md +52 -0
- core/skills/sql-authoring/scripts/analyze_plan.py +100 -0
- core/skills/sql-authoring/versions.json +17 -0
- core/skills/state-management/SKILL.md +428 -0
- core/skills/state-management/references/tanstack-query-recipes.md +301 -0
- core/skills/state-management/references/zustand-recipes.md +364 -0
- core/skills/supabase/SKILL.md +108 -0
- core/skills/supabase/assets/supabase-checklist.md +26 -0
- core/skills/supabase/references/realtime-and-storage.md +55 -0
- core/skills/supabase/references/rls-and-auth.md +65 -0
- core/skills/supabase/scripts/check_rls.py +88 -0
- core/skills/supabase/versions.json +9 -0
- core/skills/task-driver/SKILL.md +272 -0
- core/skills/task-driver/scripts/task-lint.sh +163 -0
- core/skills/technical-writing/SKILL.md +85 -0
- core/skills/technical-writing/assets/doc-checklist.md +29 -0
- core/skills/technical-writing/references/doc-anatomy.md +53 -0
- core/skills/technical-writing/references/writing-craft.md +59 -0
- core/skills/technical-writing/scripts/new_doc.py +81 -0
- core/skills/terraform-k8s/SKILL.md +133 -0
- core/skills/testing-strategy/SKILL.md +266 -0
- core/skills/testing-strategy/assets/test-review-checklist.md +25 -0
- core/skills/testing-strategy/references/test-types.md +52 -0
- core/skills/testing-strategy/scripts/coverage_gate.py +79 -0
- core/skills/thinking_os/SKILL.md +288 -0
- core/skills/thinking_os/scripts/classify.sh +122 -0
- core/skills/typescript/SKILL.md +110 -0
- core/skills/typescript/assets/typescript-checklist.md +24 -0
- core/skills/typescript/references/strictness.md +53 -0
- core/skills/typescript/references/type-system.md +86 -0
- core/skills/typescript/scripts/check_tsconfig.py +92 -0
- core/skills/typescript/versions.json +9 -0
- core/subsystems.yaml +202 -0
- core/thinking_os/__init__.py +1 -0
- core/thinking_os/_agent_markers.py +32 -0
- core/thinking_os/agents/README.md +71 -0
- core/thinking_os/agents/analyst.md +139 -0
- core/thinking_os/agents/architect.md +127 -0
- core/thinking_os/agents/debugger.md +111 -0
- core/thinking_os/agents/deployer.md +112 -0
- core/thinking_os/agents/distiller.md +28 -0
- core/thinking_os/agents/documenter.md +101 -0
- core/thinking_os/agents/implementer.md +135 -0
- core/thinking_os/agents/internal/session_observer.md +39 -0
- core/thinking_os/agents/observer.md +100 -0
- core/thinking_os/agents/onboarder.md +81 -0
- core/thinking_os/agents/refactorer.md +123 -0
- core/thinking_os/agents/repairer.md +47 -0
- core/thinking_os/agents/researcher.md +129 -0
- core/thinking_os/agents/reviewer.md +147 -0
- core/thinking_os/agents/security_auditor.md +133 -0
- core/thinking_os/background.py +405 -0
- core/thinking_os/bootstrap_outcomes.py +200 -0
- core/thinking_os/budget.py +302 -0
- core/thinking_os/capture.py +495 -0
- core/thinking_os/cognition.py +516 -0
- core/thinking_os/cognition_schemas.py +517 -0
- core/thinking_os/compress.py +192 -0
- core/thinking_os/concepts.py +233 -0
- core/thinking_os/dashboard.py +159 -0
- core/thinking_os/database.py +2883 -0
- core/thinking_os/decay.py +393 -0
- core/thinking_os/digest.py +295 -0
- core/thinking_os/dispatcher.py +192 -0
- core/thinking_os/dispatcher_helpers.py +48 -0
- core/thinking_os/dispatchers/__init__.py +3 -0
- core/thinking_os/dispatchers/default.py +47 -0
- core/thinking_os/distill.py +192 -0
- core/thinking_os/doc_indexer.py +905 -0
- core/thinking_os/embeddings.py +943 -0
- core/thinking_os/formula_composer.py +556 -0
- core/thinking_os/gate_marker.py +75 -0
- core/thinking_os/graph.py +296 -0
- core/thinking_os/graph_indexer.py +360 -0
- core/thinking_os/health_check.py +517 -0
- core/thinking_os/impact.py +119 -0
- core/thinking_os/memory_gc.py +356 -0
- core/thinking_os/migrator_embeddings.py +318 -0
- core/thinking_os/precision.py +194 -0
- core/thinking_os/presets/registry.yaml +127 -0
- core/thinking_os/record_outcome.py +399 -0
- core/thinking_os/repair.py +105 -0
- core/thinking_os/retrieval_quality.py +239 -0
- core/thinking_os/roles/analyst.yaml +83 -0
- core/thinking_os/roles/architect.yaml +88 -0
- core/thinking_os/roles/debugger.yaml +71 -0
- core/thinking_os/roles/deployer.yaml +71 -0
- core/thinking_os/roles/documenter.yaml +72 -0
- core/thinking_os/roles/implementer.yaml +83 -0
- core/thinking_os/roles/observer.yaml +70 -0
- core/thinking_os/roles/refactorer.yaml +71 -0
- core/thinking_os/roles/researcher.yaml +72 -0
- core/thinking_os/roles/reviewer.yaml +79 -0
- core/thinking_os/roles/security_auditor.yaml +83 -0
- core/thinking_os/roles_state.py +168 -0
- core/thinking_os/sanitizer.py +320 -0
- core/thinking_os/server.py +3160 -0
- core/thinking_os/session_enrich.py +272 -0
- core/thinking_os/session_observe_worker.py +111 -0
- core/thinking_os/session_startup.py +74 -0
- core/thinking_os/session_summary.py +245 -0
- core/thinking_os/situations/registry.yaml +99 -0
- core/thinking_os/task_analyzer.py +462 -0
- core/thinking_os/task_parser.py +342 -0
- core/thinking_os/task_sync.py +73 -0
- core/thinking_os/tools/__init__.py +6 -0
- core/thinking_os/tools/_shared.py +947 -0
- core/thinking_os/tools/cognition.py +1867 -0
- core/thinking_os/tools/docs.py +770 -0
- core/thinking_os/tools/learning.py +2078 -0
- core/thinking_os/tools/logs.py +79 -0
- core/thinking_os/tools/memory.py +840 -0
- core/thinking_os/tools/metrics.py +200 -0
- core/thinking_os/tools/retrieve.py +415 -0
- core/thinking_os/tools/routing.py +658 -0
- core/thinking_os/tools/tasks.py +449 -0
- core/thinking_os/tools/trajectory.py +181 -0
- core/thinking_os/tracing.py +235 -0
- core/web/__init__.py +5 -0
- core/web/_cache.py +118 -0
- core/web/_deps.py +56 -0
- core/web/_envelope.py +85 -0
- core/web/_project_context.py +140 -0
- core/web/chat_providers.py +108 -0
- core/web/init_jobs.py +216 -0
- core/web/routes/__init__.py +25 -0
- core/web/routes/_bounded_read.py +76 -0
- core/web/routes/board.py +1089 -0
- core/web/routes/cognition.py +1838 -0
- core/web/routes/config.py +635 -0
- core/web/routes/graph.py +513 -0
- core/web/routes/health.py +180 -0
- core/web/routes/hooks.py +288 -0
- core/web/routes/hub.py +1219 -0
- core/web/routes/logs.py +374 -0
- core/web/routes/metrics.py +43 -0
- core/web/routes/observability.py +400 -0
- core/web/routes/patterns.py +227 -0
- core/web/routes/presence.py +609 -0
- core/web/routes/roles.py +446 -0
- core/web/routes/scheduled.py +261 -0
- core/web/routes/search.py +238 -0
- core/web/routes/sessions.py +220 -0
- core/web/routes/settings.py +363 -0
- core/web/routes/stream.py +547 -0
- core/web/security.py +157 -0
- core/web/server.py +283 -0
- graph_os/__init__.py +29 -0
- graph_os/backend.py +233 -0
- graph_os/backends/__init__.py +13 -0
- graph_os/backends/sqlite_backend.py +1053 -0
- graph_os/communities.py +410 -0
- graph_os/enterprise.py +218 -0
- graph_os/entry_points.py +226 -0
- graph_os/extractors/__init__.py +25 -0
- graph_os/extractors/code_generic.py +914 -0
- graph_os/extractors/code_go.py +1422 -0
- graph_os/extractors/code_json.py +340 -0
- graph_os/extractors/code_php.py +979 -0
- graph_os/extractors/code_python.py +1454 -0
- graph_os/extractors/code_shell.py +538 -0
- graph_os/extractors/code_toml.py +302 -0
- graph_os/extractors/code_ts.py +1665 -0
- graph_os/extractors/code_yaml.py +394 -0
- graph_os/extractors/contracts.py +1592 -0
- graph_os/extractors/md_links.py +890 -0
- graph_os/extractors/task_deps.py +345 -0
- graph_os/groups/__init__.py +22 -0
- graph_os/groups/cross_repo.py +156 -0
- graph_os/groups/manifest.py +141 -0
- graph_os/ingest/__init__.py +19 -0
- graph_os/ingest/base.py +306 -0
- graph_os/ingest/github.py +112 -0
- graph_os/ingest/zip.py +95 -0
- graph_os/toolchain.py +393 -0
- graph_os/tools/__init__.py +9 -0
- graph_os/tools/graph.py +5573 -0
- graph_os/tools/reindex_dispatch.py +730 -0
- graph_os/tree_sitter_overlay.py +235 -0
- graph_os/types.py +252 -0
- graph_os/vec_index.py +277 -0
- graph_os/viewer/__init__.py +12 -0
- graph_os/viewer/exporter.py +93 -0
- graph_os/viewer/template.py +189 -0
- scheduled/__init__.py +0 -0
- scheduled/_activity.py +126 -0
- scheduled/_state.py +113 -0
- scheduled/config.py +86 -0
- scheduled/dep_reconcile.py +135 -0
- scheduled/error_sweep.py +137 -0
- scheduled/nightly.py +930 -0
- scheduled/responsive_extract.py +65 -0
- scripts/__init__.py +4 -0
- scripts/_commit_msg_body.sh +31 -0
- scripts/_post_commit_body.sh +49 -0
- scripts/_pre_commit_body.sh +121 -0
- scripts/_prepare_commit_msg_body.sh +53 -0
- scripts/audit_mcp_tools.py +693 -0
- scripts/bench_sdk_dispatcher.py +177 -0
- scripts/capture_golden.py +169 -0
- scripts/check_graph_phantoms.py +75 -0
- scripts/dev/audit_doc_links.py +359 -0
- scripts/dev/audit_scaffold_module_tags.py +107 -0
- scripts/dev/backfill_doc_headers.py +328 -0
- scripts/dev/backfill_nav_lines.py +119 -0
- scripts/dev/fix_nav_placement.py +106 -0
- scripts/dev/inspect_sdk_options.py +45 -0
- scripts/dev/migrate_check_ids.py +170 -0
- scripts/dev/strip_purpose_blocks.py +154 -0
- scripts/dump_openapi.py +66 -0
- scripts/e2e_dispatch_tool.py +195 -0
- scripts/generate_manifest.py +166 -0
- scripts/golden_sections.py +20 -0
- scripts/graph_demo.py +161 -0
- scripts/install-git-hooks.sh +47 -0
- scripts/migrate_embeddings_minilm_to_bge_m3.py +84 -0
- scripts/operational_eval.py +445 -0
- scripts/probe_agent_session_resolver.py +59 -0
- scripts/prune_deleted_path.py +127 -0
- scripts/refactor_agent_dual_mode.py +171 -0
- scripts/refresh_skill_versions.py +302 -0
- scripts/regen_doc_index.py +209 -0
- scripts/regen_doctor_schema.py +62 -0
- scripts/regen_rules.py +94 -0
- scripts/rename_formulas_to_semantic.py +241 -0
- scripts/smoke_db_connections.py +183 -0
- scripts/smoke_doc_header.py +72 -0
- scripts/smoke_graph_e2e.py +374 -0
- scripts/smoke_sdk_dispatch.py +84 -0
- scripts/smoke_uid_resolver.py +164 -0
- scripts/verify_dispatchers.py +244 -0
- scripts/verify_phase_c_e2e.py +436 -0
- templates/__init__.py +6 -0
- templates/_base/Makefile.base +353 -0
- templates/_base/base.yaml +59 -0
- templates/_base/coding-os.yaml.template +39 -0
- templates/_base/dimension-registry.template.md +68 -0
- templates/_base/domain-config.template.json +46 -0
- templates/_base/fragments/anatomy-map.md.tmpl +11 -0
- templates/_base/fragments/context-discipline.md.tmpl +3 -0
- templates/_base/fragments/core-loop.md.tmpl +52 -0
- templates/_base/fragments/engineering-routing.md.tmpl +3 -0
- templates/_base/fragments/header.md.tmpl +6 -0
- templates/_base/fragments/identity.md.tmpl +3 -0
- templates/_base/fragments/principles.md.tmpl +3 -0
- templates/_base/fragments/retrieval-routing.md.tmpl +23 -0
- templates/_base/fragments/session-handoff.md.tmpl +3 -0
- templates/_base/fragments/skills.md.tmpl +3 -0
- templates/_base/fragments/ssot-map.md.tmpl +3 -0
- templates/_base/fragments/stop-conditions.md.tmpl +3 -0
- templates/_base/fragments/subagent-dispatch.md.tmpl +3 -0
- templates/_base/fragments/task-authoring.md.tmpl +69 -0
- templates/_base/fragments/task-logging.md.tmpl +8 -0
- templates/_base/fragments/tool-routing.md.tmpl +9 -0
- templates/_base/fragments/verification-matrix.md.tmpl +12 -0
- templates/_base/lang/dart/analysis_options.yaml +7 -0
- templates/_base/lang/php/phpcs.xml.dist +10 -0
- templates/_base/lang/python/pyproject.toml +19 -0
- templates/_base/lang/rust/clippy.toml +5 -0
- templates/_base/lang/rust/rustfmt.toml +3 -0
- templates/_base/lang/typescript/eslint.config.js +26 -0
- templates/_base/lang/typescript/tsconfig.json +15 -0
- templates/_base/lang/typescript/vitest.config.ts +10 -0
- templates/_base/scaffold/changes.log +1 -0
- templates/_base/scaffold/docs/00-index.md +55 -0
- templates/_base/scaffold/docs/_meta/feature-dependency-tree.md +30 -0
- templates/_base/scaffold/docs/_meta/foundation-map.md +56 -0
- templates/_base/scaffold/docs/_meta/questions.md +8 -0
- templates/_base/scaffold/docs/_meta/roadmap.md +33 -0
- templates/_base/scaffold/docs/api-contracts/00-index.md +58 -0
- templates/_base/scaffold/docs/api-contracts/error-format.md +58 -0
- templates/_base/scaffold/docs/architecture/00-index.md +42 -0
- templates/_base/scaffold/docs/architecture/adr/00-index.md +39 -0
- templates/_base/scaffold/docs/engineering/00-index.md +9 -0
- templates/_base/scaffold/docs/governance/00-index.md +55 -0
- templates/_base/scaffold/docs/governance/_templates/doc-cheat-sheet.md +202 -0
- templates/_base/scaffold/docs/governance/_templates/playbook-template.md +81 -0
- templates/_base/scaffold/docs/governance/_templates/post-mortem-template.md +85 -0
- templates/_base/scaffold/docs/governance/_templates/runbook-template.md +88 -0
- templates/_base/scaffold/docs/governance/_templates/security-review-template.md +111 -0
- templates/_base/scaffold/docs/governance/_templates/task-detail.md +61 -0
- templates/_base/scaffold/docs/governance/agent-workflow.md +101 -0
- templates/_base/scaffold/docs/governance/anatomy-contract.md +150 -0
- templates/_base/scaffold/docs/governance/critical-rules.md +224 -0
- templates/_base/scaffold/docs/governance/decision-records.md +58 -0
- templates/_base/scaffold/docs/governance/docs-first-protocol.md +157 -0
- templates/_base/scaffold/docs/governance/docs-system.md +151 -0
- templates/_base/scaffold/docs/governance/gdpr-compliance.md +66 -0
- templates/_base/scaffold/docs/governance/mcp-tool-inventory.md +112 -0
- templates/_base/scaffold/docs/governance/risk-register.md +26 -0
- templates/_base/scaffold/docs/governance/scaffold-boundary-contract.md +161 -0
- templates/_base/scaffold/docs/governance/task-lifecycle.md +125 -0
- templates/_base/scaffold/docs/governance/wrapper-derivation.md +50 -0
- templates/_base/scaffold/docs/insights/00-index.md +17 -0
- templates/_base/scaffold/docs/ops/00-index.md +59 -0
- templates/_base/scaffold/docs/ops/runbooks/00-index.md +9 -0
- templates/_base/scaffold/docs/playbooks/00-index.md +12 -0
- templates/_base/scaffold/docs/playbooks/research-validation.md +29 -0
- templates/_base/scaffold/docs/playbooks/security-review.md +41 -0
- templates/_base/scaffold/docs/prd/00-index.md +43 -0
- templates/_base/scaffold/docs/prd/01-snapshot-vision.md +56 -0
- templates/_base/scaffold/docs/workflow/workflow-guide.md +138 -0
- templates/_base/scaffold/src/shared/README.md +23 -0
- templates/_base/skill-enforcement.template.md +14 -0
- templates/_base/task-detail.template.md +61 -0
- templates/_presets/ai-saas.yaml +9 -0
- templates/_presets/django-next.yaml +8 -0
- templates/_presets/dotnet-react.yaml +8 -0
- templates/_presets/flutter-baas.yaml +8 -0
- templates/_presets/go-react.yaml +8 -0
- templates/_presets/hexagonal-product.yaml +16 -0
- templates/_presets/jamstack.yaml +8 -0
- templates/_presets/laravel-vue.yaml +8 -0
- templates/_presets/mean.yaml +8 -0
- templates/_presets/mern.yaml +9 -0
- templates/_presets/nest-angular.yaml +8 -0
- templates/_presets/nextjs-fastapi.yaml +10 -0
- templates/_presets/nuxt-fullstack.yaml +9 -0
- templates/_presets/pern.yaml +9 -0
- templates/_presets/rails-react.yaml +8 -0
- templates/_presets/rn-api.yaml +8 -0
- templates/_presets/rust-svelte.yaml +8 -0
- templates/_presets/spring-react.yaml +8 -0
- templates/_presets/t3-style.yaml +9 -0
- templates/_presets/tall.yaml +8 -0
- templates/_presets/wordpress-cms.yaml +8 -0
- templates/angular/rules/frontend.md +19 -0
- templates/angular/scaffold/docs/engineering/accessibility.md +46 -0
- templates/angular/scaffold/docs/engineering/angular-rules.md +35 -0
- templates/angular/scaffold/docs/playbooks/angular-app.md +42 -0
- templates/angular/scaffold/src/frontend/angular.json +52 -0
- templates/angular/scaffold/src/frontend/package.json +28 -0
- templates/angular/scaffold/src/frontend/src/app/app.component.ts +19 -0
- templates/angular/scaffold/src/frontend/src/app/app.config.ts +22 -0
- templates/angular/scaffold/src/frontend/src/app/app.routes.ts +8 -0
- templates/angular/scaffold/src/frontend/src/app/core/global-error-handler.ts +12 -0
- templates/angular/scaffold/src/frontend/src/app/health/health.component.ts +14 -0
- templates/angular/scaffold/src/frontend/src/app/health/health.service.spec.ts +16 -0
- templates/angular/scaffold/src/frontend/src/app/health/health.service.ts +10 -0
- templates/angular/scaffold/src/frontend/src/index.html +11 -0
- templates/angular/scaffold/src/frontend/src/main.ts +9 -0
- templates/angular/scaffold/src/frontend/src/styles.css +14 -0
- templates/angular/scaffold/src/frontend/tsconfig.app.json +8 -0
- templates/angular/scaffold/src/frontend/tsconfig.json +27 -0
- templates/angular/scaffold/src/frontend/tsconfig.spec.json +8 -0
- templates/angular/scaffold-boundary.yaml +27 -0
- templates/angular/skills/angular/SKILL.md +79 -0
- templates/angular/skills/angular/references/anatomy.md +69 -0
- templates/angular/stack.yaml +75 -0
- templates/aspnet-core/rules/backend.md +20 -0
- templates/aspnet-core/scaffold/docs/engineering/aspnet-core-rules.md +36 -0
- templates/aspnet-core/scaffold/docs/playbooks/aspnet-core-service.md +40 -0
- templates/aspnet-core/scaffold/src/backend/Backend.csproj +11 -0
- templates/aspnet-core/scaffold/src/backend/Backend.sln +27 -0
- templates/aspnet-core/scaffold/src/backend/Common/ExceptionHandlingMiddleware.cs +35 -0
- templates/aspnet-core/scaffold/src/backend/Features/Health/HealthEndpoints.cs +10 -0
- templates/aspnet-core/scaffold/src/backend/Features/Health/HealthService.cs +9 -0
- templates/aspnet-core/scaffold/src/backend/Program.cs +22 -0
- templates/aspnet-core/scaffold/src/backend/tests/Backend.Tests/Backend.Tests.csproj +22 -0
- templates/aspnet-core/scaffold/src/backend/tests/Backend.Tests/HealthServiceTests.cs +15 -0
- templates/aspnet-core/scaffold-boundary.yaml +24 -0
- templates/aspnet-core/skills/aspnet-core/SKILL.md +80 -0
- templates/aspnet-core/skills/aspnet-core/references/anatomy.md +65 -0
- templates/aspnet-core/stack.yaml +68 -0
- templates/astro/rules/frontend.md +20 -0
- templates/astro/scaffold/docs/engineering/astro-rules.md +40 -0
- templates/astro/scaffold/docs/playbooks/astro-app.md +57 -0
- templates/astro/scaffold/docs/playbooks/content-seo.md +37 -0
- templates/astro/scaffold/src/frontend/astro.config.mjs +10 -0
- templates/astro/scaffold/src/frontend/package.json +23 -0
- templates/astro/scaffold/src/frontend/src/components/Greeting.astro +13 -0
- templates/astro/scaffold/src/frontend/src/content/posts/hello.md +10 -0
- templates/astro/scaffold/src/frontend/src/content.config.ts +19 -0
- templates/astro/scaffold/src/frontend/src/lib/problem.test.ts +39 -0
- templates/astro/scaffold/src/frontend/src/lib/problem.ts +30 -0
- templates/astro/scaffold/src/frontend/src/pages/api/health.ts +13 -0
- templates/astro/scaffold/src/frontend/src/pages/index.astro +21 -0
- templates/astro/scaffold/src/frontend/tsconfig.json +9 -0
- templates/astro/scaffold/src/frontend/vitest.config.ts +10 -0
- templates/astro/scaffold-boundary.yaml +28 -0
- templates/astro/skills/astro/SKILL.md +71 -0
- templates/astro/skills/astro/references/anatomy.md +66 -0
- templates/astro/stack.yaml +75 -0
- templates/csharp-plain/scaffold/src/backend/Backend.csproj +12 -0
- templates/csharp-plain/scaffold/src/backend/Program.cs +1 -0
- templates/csharp-plain/scaffold-boundary.yaml +23 -0
- templates/csharp-plain/stack.yaml +50 -0
- templates/django/rules/backend.md +18 -0
- templates/django/scaffold/docs/engineering/anti-ambiguity.md +74 -0
- templates/django/scaffold/docs/engineering/backend-rules.md +133 -0
- templates/django/scaffold/docs/engineering/glossary.md +51 -0
- templates/django/scaffold/docs/engineering/logging-standards.md +107 -0
- templates/django/scaffold/docs/engineering/naming-conventions.md +68 -0
- templates/django/scaffold/docs/engineering/secrets-rotation-runbook.md +142 -0
- templates/django/scaffold/docs/playbooks/backend-api.md +119 -0
- templates/django/scaffold/src/backend/config/__init__.py +0 -0
- templates/django/scaffold/src/backend/config/settings.py +31 -0
- templates/django/scaffold/src/backend/config/urls.py +11 -0
- templates/django/scaffold/src/backend/config/wsgi.py +6 -0
- templates/django/scaffold/src/backend/manage.py +14 -0
- templates/django/scaffold/src/backend/pyproject.toml +37 -0
- templates/django/scaffold/src/backend/tests/test_health.py +4 -0
- templates/django/scaffold-boundary.yaml +25 -0
- templates/django/skills/python-django/SKILL.md +450 -0
- templates/django/skills/python-django/references/anatomy.md +117 -0
- templates/django/skills/python-django/scripts/new_endpoint.py +89 -0
- templates/django/stack.yaml +73 -0
- templates/fastapi/rules/backend.md +18 -0
- templates/fastapi/scaffold/docs/engineering/fastapi-rules.md +37 -0
- templates/fastapi/scaffold/docs/playbooks/fastapi-service.md +30 -0
- templates/fastapi/scaffold/src/backend/app/__init__.py +0 -0
- templates/fastapi/scaffold/src/backend/app/main.py +8 -0
- templates/fastapi/scaffold/src/backend/pyproject.toml +39 -0
- templates/fastapi/scaffold/src/backend/tests/test_health.py +11 -0
- templates/fastapi/scaffold-boundary.yaml +25 -0
- templates/fastapi/skills/python-fastapi/SKILL.md +75 -0
- templates/fastapi/skills/python-fastapi/references/anatomy.md +117 -0
- templates/fastapi/skills/python-fastapi/scripts/new_endpoint.py +101 -0
- templates/fastapi/stack.yaml +57 -0
- templates/flutter/rules/mobile.md +26 -0
- templates/flutter/scaffold/docs/engineering/flutter-rules.md +35 -0
- templates/flutter/scaffold/docs/playbooks/flutter-app.md +45 -0
- templates/flutter/scaffold/src/mobile/lib/core/error_mapper.dart +17 -0
- templates/flutter/scaffold/src/mobile/lib/core/router.dart +13 -0
- templates/flutter/scaffold/src/mobile/lib/main.dart +22 -0
- templates/flutter/scaffold/src/mobile/lib/screens/health_screen.dart +32 -0
- templates/flutter/scaffold/src/mobile/lib/services/health_service.dart +11 -0
- templates/flutter/scaffold/src/mobile/lib/state/health_provider.dart +13 -0
- templates/flutter/scaffold/src/mobile/pubspec.yaml +22 -0
- templates/flutter/scaffold/src/mobile/test/health_provider_test.dart +90 -0
- templates/flutter/scaffold-boundary.yaml +28 -0
- templates/flutter/skills/flutter/SKILL.md +76 -0
- templates/flutter/skills/flutter/references/anatomy.md +64 -0
- templates/flutter/stack.yaml +70 -0
- templates/go/rules/backend.md +19 -0
- templates/go/scaffold/docs/engineering/go-rules.md +45 -0
- templates/go/scaffold/docs/playbooks/go-service.md +30 -0
- templates/go/scaffold/src/backend/cmd/api/main.go +22 -0
- templates/go/scaffold/src/backend/cmd/api/main_test.go +20 -0
- templates/go/scaffold/src/backend/go.mod +3 -0
- templates/go/scaffold-boundary.yaml +25 -0
- templates/go/skills/go-patterns/SKILL.md +68 -0
- templates/go/skills/go-patterns/assets/go-checklist.md +29 -0
- templates/go/skills/go-patterns/references/anatomy.md +115 -0
- templates/go/skills/go-patterns/references/go-2026-idioms.md +92 -0
- templates/go/skills/go-patterns/scripts/new_endpoint.py +117 -0
- templates/go/skills/go-patterns/versions.json +16 -0
- templates/go/stack.yaml +54 -0
- templates/go-fiber/rules/backend.md +20 -0
- templates/go-fiber/scaffold/docs/engineering/fiber-rules.md +97 -0
- templates/go-fiber/scaffold/docs/playbooks/fiber-service.md +149 -0
- templates/go-fiber/scaffold/src/backend/cmd/api/main.go +21 -0
- templates/go-fiber/scaffold/src/backend/cmd/api/main_test.go +17 -0
- templates/go-fiber/scaffold/src/backend/go.mod +23 -0
- templates/go-fiber/scaffold/src/backend/go.sum +49 -0
- templates/go-fiber/scaffold-boundary.yaml +26 -0
- templates/go-fiber/skills/go-fiber/SKILL.md +203 -0
- templates/go-fiber/skills/go-fiber/assets/fiber-checklist.md +26 -0
- templates/go-fiber/skills/go-fiber/references/anatomy.md +116 -0
- templates/go-fiber/skills/go-fiber/references/fiber-v3-patterns.md +89 -0
- templates/go-fiber/skills/go-fiber/scripts/new_endpoint.py +107 -0
- templates/go-fiber/skills/go-fiber/versions.json +16 -0
- templates/go-fiber/stack.yaml +59 -0
- templates/go-plain/scaffold/src/backend/go.mod +3 -0
- templates/go-plain/scaffold/src/backend/main.go +7 -0
- templates/go-plain/scaffold-boundary.yaml +22 -0
- templates/go-plain/stack.yaml +51 -0
- templates/java-plain/scaffold/src/backend/mvnw +302 -0
- templates/java-plain/scaffold/src/backend/pom.xml +41 -0
- templates/java-plain/scaffold/src/backend/src/main/java/com/example/app/Main.java +10 -0
- templates/java-plain/scaffold-boundary.yaml +23 -0
- templates/java-plain/stack.yaml +51 -0
- templates/laravel/rules/backend.md +20 -0
- templates/laravel/scaffold/docs/engineering/laravel-rules.md +28 -0
- templates/laravel/scaffold/docs/playbooks/laravel-service.md +28 -0
- templates/laravel/scaffold/src/backend/app/Exceptions/Handler.php +27 -0
- templates/laravel/scaffold/src/backend/app/Http/Controllers/HealthController.php +15 -0
- templates/laravel/scaffold/src/backend/app/Support/HealthStatus.php +14 -0
- templates/laravel/scaffold/src/backend/composer.json +24 -0
- templates/laravel/scaffold/src/backend/phpunit.xml +10 -0
- templates/laravel/scaffold/src/backend/public/index.php +8 -0
- templates/laravel/scaffold/src/backend/routes/api.php +7 -0
- templates/laravel/scaffold/src/backend/tests/Unit/HealthStatusTest.php +16 -0
- templates/laravel/scaffold-boundary.yaml +23 -0
- templates/laravel/skills/laravel/SKILL.md +56 -0
- templates/laravel/skills/laravel/references/anatomy.md +65 -0
- templates/laravel/stack.yaml +66 -0
- templates/meta/rules/graph-first.md +27 -0
- templates/meta/rules/hook-author.md +19 -0
- templates/meta/rules/mcp-tool-author.md +18 -0
- templates/meta/rules/meta-engineering.md +17 -0
- templates/meta/scaffold-boundary.yaml +55 -0
- templates/meta/skills/claude-sdk-integration/SKILL.md +163 -0
- templates/meta/skills/claude-sdk-integration/assets/sdk-checklist.md +27 -0
- templates/meta/skills/claude-sdk-integration/scripts/check_model_ids.py +97 -0
- templates/meta/skills/graph-os-authoring/SKILL.md +278 -0
- templates/meta/skills/graph-os-authoring/assets/graph-os-checklist.md +25 -0
- templates/meta/skills/graph-os-authoring/scripts/new_extractor.py +76 -0
- templates/meta/skills/hook-authoring/SKILL.md +292 -0
- templates/meta/skills/hook-authoring/assets/hook-checklist.md +30 -0
- templates/meta/skills/hook-authoring/scripts/new_hook.sh +75 -0
- templates/meta/skills/mcp-tool-authoring/SKILL.md +301 -0
- templates/meta/skills/mcp-tool-authoring/assets/mcp-tool-checklist.md +29 -0
- templates/meta/skills/mcp-tool-authoring/scripts/new_tool.py +74 -0
- templates/meta/skills/meta-engineering/SKILL.md +151 -0
- templates/meta/skills/meta-engineering/assets/meta-edit-checklist.md +28 -0
- templates/meta/skills/meta-engineering/scripts/which_layer.py +61 -0
- templates/meta/skills/python-meta-server/SKILL.md +162 -0
- templates/meta/skills/python-meta-server/assets/meta-server-checklist.md +28 -0
- templates/meta/skills/python-meta-server/scripts/check_envelope.py +91 -0
- templates/meta/skills/react-vite-hub/SKILL.md +140 -0
- templates/meta/skills/react-vite-hub/assets/hub-ui-checklist.md +23 -0
- templates/meta/skills/react-vite-hub/scripts/check_vite_env.py +73 -0
- templates/meta/stack.yaml +119 -0
- templates/nestjs/rules/backend.md +20 -0
- templates/nestjs/scaffold/docs/engineering/nestjs-rules.md +33 -0
- templates/nestjs/scaffold/docs/playbooks/nestjs-service.md +39 -0
- templates/nestjs/scaffold/src/backend/nest-cli.json +5 -0
- templates/nestjs/scaffold/src/backend/package.json +28 -0
- templates/nestjs/scaffold/src/backend/src/app.module.ts +9 -0
- templates/nestjs/scaffold/src/backend/src/common/all-exceptions.filter.ts +59 -0
- templates/nestjs/scaffold/src/backend/src/health/health.controller.ts +14 -0
- templates/nestjs/scaffold/src/backend/src/health/health.module.ts +10 -0
- templates/nestjs/scaffold/src/backend/src/health/health.service.spec.ts +21 -0
- templates/nestjs/scaffold/src/backend/src/health/health.service.ts +9 -0
- templates/nestjs/scaffold/src/backend/src/main.ts +26 -0
- templates/nestjs/scaffold/src/backend/tsconfig.json +16 -0
- templates/nestjs/scaffold/src/backend/vitest.config.ts +9 -0
- templates/nestjs/scaffold-boundary.yaml +25 -0
- templates/nestjs/skills/nestjs/SKILL.md +67 -0
- templates/nestjs/skills/nestjs/references/anatomy.md +65 -0
- templates/nestjs/stack.yaml +68 -0
- templates/nextjs/rules/frontend.md +18 -0
- templates/nextjs/scaffold/docs/design/00-index.md +23 -0
- templates/nextjs/scaffold/docs/design/colors-tokens.md +141 -0
- templates/nextjs/scaffold/docs/design/components-patterns.md +159 -0
- templates/nextjs/scaffold/docs/design/motion-accessibility.md +137 -0
- templates/nextjs/scaffold/docs/design/typography-spacing.md +107 -0
- templates/nextjs/scaffold/docs/engineering/accessibility-web.md +56 -0
- templates/nextjs/scaffold/docs/engineering/copywriting-standard.md +102 -0
- templates/nextjs/scaffold/docs/engineering/formatting-rules.md +89 -0
- templates/nextjs/scaffold/docs/engineering/frontend-rendering-rules.md +80 -0
- templates/nextjs/scaffold/docs/engineering/frontend-rules.md +183 -0
- templates/nextjs/scaffold/docs/engineering/i18n-policy.md +99 -0
- templates/nextjs/scaffold/docs/pages-content-spec/00-index.md +78 -0
- templates/nextjs/scaffold/docs/playbooks/content-seo.md +55 -0
- templates/nextjs/scaffold/docs/playbooks/docs-governance.md +51 -0
- templates/nextjs/scaffold/docs/playbooks/frontend-ui.md +63 -0
- templates/nextjs/scaffold/src/frontend/app/layout.tsx +14 -0
- templates/nextjs/scaffold/src/frontend/app/page.tsx +3 -0
- templates/nextjs/scaffold/src/frontend/eslint.config.js +17 -0
- templates/nextjs/scaffold/src/frontend/lib/greeting.test.ts +9 -0
- templates/nextjs/scaffold/src/frontend/lib/greeting.ts +3 -0
- templates/nextjs/scaffold/src/frontend/package.json +28 -0
- templates/nextjs/scaffold/src/frontend/tsconfig.json +18 -0
- templates/nextjs/scaffold/src/frontend/vitest.config.ts +10 -0
- templates/nextjs/scaffold-boundary.yaml +30 -0
- templates/nextjs/skills/nextjs-react/SKILL.md +485 -0
- templates/nextjs/skills/nextjs-react/references/anatomy.md +116 -0
- templates/nextjs/skills/nextjs-react/scripts/new_component.py +72 -0
- templates/nextjs/stack.yaml +81 -0
- templates/node-express/rules/backend.md +20 -0
- templates/node-express/scaffold/docs/engineering/express-rules.md +30 -0
- templates/node-express/scaffold/docs/playbooks/express-service.md +35 -0
- templates/node-express/scaffold/src/backend/package.json +24 -0
- templates/node-express/scaffold/src/backend/src/index.ts +17 -0
- templates/node-express/scaffold/src/backend/src/middleware/error-handler.ts +12 -0
- templates/node-express/scaffold/src/backend/src/routes/health.test.ts +33 -0
- templates/node-express/scaffold/src/backend/src/routes/health.ts +7 -0
- templates/node-express/scaffold/src/backend/tsconfig.json +15 -0
- templates/node-express/scaffold/src/backend/types/express-bootstrap.d.ts +21 -0
- templates/node-express/scaffold-boundary.yaml +25 -0
- templates/node-express/skills/node-express/SKILL.md +70 -0
- templates/node-express/skills/node-express/references/anatomy.md +63 -0
- templates/node-express/stack.yaml +63 -0
- templates/python/scaffold/docs/engineering/python-rules.md +27 -0
- templates/python/scaffold/docs/playbooks/python-library.md +35 -0
- templates/python/stack.yaml +60 -0
- templates/rails/rules/backend.md +10 -0
- templates/rails/scaffold/docs/engineering/rails-rules.md +33 -0
- templates/rails/scaffold/docs/playbooks/rails-service.md +42 -0
- templates/rails/scaffold/src/backend/Gemfile +12 -0
- templates/rails/scaffold/src/backend/app/controllers/application_controller.rb +26 -0
- templates/rails/scaffold/src/backend/app/controllers/health_controller.rb +6 -0
- templates/rails/scaffold/src/backend/app/models/health.rb +6 -0
- templates/rails/scaffold/src/backend/config/application.rb +12 -0
- templates/rails/scaffold/src/backend/config/boot.rb +3 -0
- templates/rails/scaffold/src/backend/config/routes.rb +4 -0
- templates/rails/scaffold/src/backend/config.ru +5 -0
- templates/rails/scaffold/src/backend/spec/rails_helper.rb +18 -0
- templates/rails/scaffold/src/backend/spec/requests/health_spec.rb +24 -0
- templates/rails/scaffold-boundary.yaml +25 -0
- templates/rails/skills/rails/SKILL.md +62 -0
- templates/rails/skills/rails/references/anatomy.md +71 -0
- templates/rails/stack.yaml +72 -0
- templates/react-native/rules/mobile.md +26 -0
- templates/react-native/scaffold/docs/engineering/accessibility-mobile.md +95 -0
- templates/react-native/scaffold/docs/engineering/mobile-rules.md +56 -0
- templates/react-native/scaffold/docs/engineering/offline-first.md +61 -0
- templates/react-native/scaffold/docs/playbooks/mobile-app.md +49 -0
- templates/react-native/scaffold/src/mobile/App.tsx +9 -0
- templates/react-native/scaffold/src/mobile/eslint.config.js +17 -0
- templates/react-native/scaffold/src/mobile/package.json +23 -0
- templates/react-native/scaffold/src/mobile/src/greeting.test.ts +9 -0
- templates/react-native/scaffold/src/mobile/src/greeting.ts +3 -0
- templates/react-native/scaffold/src/mobile/tsconfig.json +17 -0
- templates/react-native/scaffold/src/mobile/vitest.config.ts +10 -0
- templates/react-native/scaffold-boundary.yaml +30 -0
- templates/react-native/skills/react-native-mobile/SKILL.md +119 -0
- templates/react-native/skills/react-native-mobile/assets/rn-mobile-checklist.md +28 -0
- templates/react-native/skills/react-native-mobile/references/anatomy.md +140 -0
- templates/react-native/skills/react-native-mobile/references/rn-2026-practices.md +54 -0
- templates/react-native/skills/react-native-mobile/scripts/new_screen.py +73 -0
- templates/react-native/skills/react-native-mobile/versions.json +16 -0
- templates/react-native/skills/react-native-patterns/SKILL.md +512 -0
- templates/react-native/skills/react-native-patterns/assets/rn-review-checklist.md +26 -0
- templates/react-native/skills/react-native-patterns/references/anatomy.md +62 -0
- templates/react-native/skills/react-native-patterns/references/list-performance.md +70 -0
- templates/react-native/skills/react-native-patterns/scripts/scan_rn_perf.py +77 -0
- templates/react-native/stack.yaml +70 -0
- templates/ruby-plain/scaffold/src/backend/Gemfile +8 -0
- templates/ruby-plain/scaffold/src/backend/main.rb +3 -0
- templates/ruby-plain/scaffold-boundary.yaml +23 -0
- templates/ruby-plain/stack.yaml +50 -0
- templates/rust-axum/rules/backend.md +20 -0
- templates/rust-axum/scaffold/docs/engineering/rust-axum-rules.md +35 -0
- templates/rust-axum/scaffold/docs/playbooks/rust-axum-service.md +43 -0
- templates/rust-axum/scaffold/src/backend/Cargo.toml +20 -0
- templates/rust-axum/scaffold/src/backend/src/app.rs +12 -0
- templates/rust-axum/scaffold/src/backend/src/error.rs +48 -0
- templates/rust-axum/scaffold/src/backend/src/main.rs +24 -0
- templates/rust-axum/scaffold/src/backend/src/routes/health.rs +37 -0
- templates/rust-axum/scaffold/src/backend/src/routes/mod.rs +2 -0
- templates/rust-axum/scaffold-boundary.yaml +25 -0
- templates/rust-axum/skills/rust/SKILL.md +73 -0
- templates/rust-axum/skills/rust/references/anatomy.md +63 -0
- templates/rust-axum/stack.yaml +65 -0
- templates/rust-plain/scaffold/src/backend/Cargo.toml +6 -0
- templates/rust-plain/scaffold/src/backend/src/main.rs +3 -0
- templates/rust-plain/scaffold-boundary.yaml +23 -0
- templates/rust-plain/stack.yaml +51 -0
- templates/spring-boot/rules/backend.md +20 -0
- templates/spring-boot/scaffold/docs/engineering/spring-boot-rules.md +35 -0
- templates/spring-boot/scaffold/docs/playbooks/spring-boot-service.md +45 -0
- templates/spring-boot/scaffold/src/backend/mvnw +302 -0
- templates/spring-boot/scaffold/src/backend/pom.xml +69 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/Application.java +16 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/common/GlobalExceptionHandler.java +31 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/health/HealthController.java +22 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/health/HealthService.java +12 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/health/HealthStatus.java +4 -0
- templates/spring-boot/scaffold/src/backend/src/test/java/com/example/app/health/HealthServiceTest.java +15 -0
- templates/spring-boot/scaffold-boundary.yaml +26 -0
- templates/spring-boot/skills/spring-boot/SKILL.md +84 -0
- templates/spring-boot/skills/spring-boot/references/anatomy.md +63 -0
- templates/spring-boot/stack.yaml +65 -0
- templates/svelte-sveltekit/rules/frontend.md +20 -0
- templates/svelte-sveltekit/scaffold/docs/engineering/svelte-sveltekit-rules.md +37 -0
- templates/svelte-sveltekit/scaffold/docs/playbooks/svelte-sveltekit-app.md +36 -0
- templates/svelte-sveltekit/scaffold/src/frontend/package.json +22 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/app.html +12 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/hooks.server.ts +14 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/lib/components/Greeting.svelte +6 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/lib/stores/count.test.ts +26 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/lib/stores/count.ts +4 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/+layout.svelte +24 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/+page.svelte +9 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/+page.ts +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/health/+server.ts +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/svelte.config.js +10 -0
- templates/svelte-sveltekit/scaffold/src/frontend/tsconfig.json +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/vite.config.ts +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/vitest.config.ts +11 -0
- templates/svelte-sveltekit/scaffold-boundary.yaml +29 -0
- templates/svelte-sveltekit/skills/svelte/SKILL.md +90 -0
- templates/svelte-sveltekit/skills/svelte/references/anatomy.md +62 -0
- templates/svelte-sveltekit/stack.yaml +70 -0
- templates/typescript-plain/scaffold/src/index.ts +3 -0
- templates/typescript-plain/scaffold/tsconfig.json +13 -0
- templates/typescript-plain/scaffold-boundary.yaml +22 -0
- templates/typescript-plain/stack.yaml +44 -0
- templates/vue-nuxt/rules/frontend.md +19 -0
- templates/vue-nuxt/scaffold/docs/engineering/nuxt-rules.md +30 -0
- templates/vue-nuxt/scaffold/docs/playbooks/nuxt-app.md +29 -0
- templates/vue-nuxt/scaffold/src/frontend/app.vue +3 -0
- templates/vue-nuxt/scaffold/src/frontend/nuxt.config.ts +11 -0
- templates/vue-nuxt/scaffold/src/frontend/package.json +20 -0
- templates/vue-nuxt/scaffold/src/frontend/pages/index.test.ts +19 -0
- templates/vue-nuxt/scaffold/src/frontend/pages/index.vue +11 -0
- templates/vue-nuxt/scaffold/src/frontend/vitest.config.ts +12 -0
- templates/vue-nuxt/scaffold-boundary.yaml +26 -0
- templates/vue-nuxt/skills/vue-nuxt/SKILL.md +57 -0
- templates/vue-nuxt/skills/vue-nuxt/references/anatomy.md +60 -0
- templates/vue-nuxt/stack.yaml +61 -0
- templates/wordpress/rules/backend.md +19 -0
- templates/wordpress/scaffold/docs/engineering/wordpress-rules.md +28 -0
- templates/wordpress/scaffold/docs/playbooks/wordpress-service.md +29 -0
- templates/wordpress/scaffold/src/backend/composer.json +17 -0
- templates/wordpress/scaffold/src/backend/phpcs.xml.dist +11 -0
- templates/wordpress/scaffold/src/backend/phpunit.xml +10 -0
- templates/wordpress/scaffold/src/backend/plugin/inc/health.php +8 -0
- templates/wordpress/scaffold/src/backend/plugin/plugin.php +28 -0
- templates/wordpress/scaffold/src/backend/tests/HealthStatusTest.php +15 -0
- templates/wordpress/scaffold/src/backend/theme/functions.php +18 -0
- templates/wordpress/scaffold/src/backend/theme/style.css +11 -0
- templates/wordpress/scaffold-boundary.yaml +23 -0
- templates/wordpress/skills/wordpress/SKILL.md +110 -0
- templates/wordpress/skills/wordpress/assets/wp-checklist.md +28 -0
- templates/wordpress/skills/wordpress/references/wp-development.md +75 -0
- templates/wordpress/skills/wordpress/references/wp-security.md +68 -0
- templates/wordpress/skills/wordpress/scripts/scan_wp_smells.py +91 -0
- templates/wordpress/skills/wordpress/versions.json +16 -0
- templates/wordpress/stack.yaml +60 -0
- thinking_os/__init__.py +1 -0
- thinking_os/_agent_markers.py +32 -0
- thinking_os/background.py +405 -0
- thinking_os/bootstrap_outcomes.py +200 -0
- thinking_os/budget.py +302 -0
- thinking_os/capture.py +495 -0
- thinking_os/cognition.py +516 -0
- thinking_os/cognition_schemas.py +517 -0
- thinking_os/compress.py +192 -0
- thinking_os/concepts.py +233 -0
- thinking_os/dashboard.py +159 -0
- thinking_os/database.py +2883 -0
- thinking_os/decay.py +393 -0
- thinking_os/digest.py +295 -0
- thinking_os/dispatcher.py +192 -0
- thinking_os/dispatcher_helpers.py +48 -0
- thinking_os/dispatchers/__init__.py +3 -0
- thinking_os/dispatchers/default.py +47 -0
- thinking_os/distill.py +192 -0
- thinking_os/doc_indexer.py +905 -0
- thinking_os/embeddings.py +943 -0
- thinking_os/formula_composer.py +556 -0
- thinking_os/gate_marker.py +75 -0
- thinking_os/graph.py +296 -0
- thinking_os/graph_indexer.py +360 -0
- thinking_os/health_check.py +517 -0
- thinking_os/impact.py +119 -0
- thinking_os/memory_gc.py +356 -0
- thinking_os/migrator_embeddings.py +318 -0
- thinking_os/precision.py +194 -0
- thinking_os/record_outcome.py +399 -0
- thinking_os/repair.py +105 -0
- thinking_os/retrieval_quality.py +239 -0
- thinking_os/roles_state.py +168 -0
- thinking_os/sanitizer.py +320 -0
- thinking_os/server.py +3160 -0
- thinking_os/session_enrich.py +272 -0
- thinking_os/session_observe_worker.py +111 -0
- thinking_os/session_startup.py +74 -0
- thinking_os/session_summary.py +245 -0
- thinking_os/task_analyzer.py +462 -0
- thinking_os/task_parser.py +342 -0
- thinking_os/task_sync.py +73 -0
- thinking_os/tools/__init__.py +6 -0
- thinking_os/tools/_shared.py +947 -0
- thinking_os/tools/cognition.py +1867 -0
- thinking_os/tools/docs.py +770 -0
- thinking_os/tools/learning.py +2078 -0
- thinking_os/tools/logs.py +79 -0
- thinking_os/tools/memory.py +840 -0
- thinking_os/tools/metrics.py +200 -0
- thinking_os/tools/retrieve.py +415 -0
- thinking_os/tools/routing.py +658 -0
- thinking_os/tools/tasks.py +449 -0
- thinking_os/tools/trajectory.py +181 -0
- thinking_os/tracing.py +235 -0
- web/__init__.py +5 -0
- web/_cache.py +118 -0
- web/_deps.py +56 -0
- web/_envelope.py +85 -0
- web/_project_context.py +140 -0
- web/chat_providers.py +108 -0
- web/init_jobs.py +216 -0
- web/routes/__init__.py +25 -0
- web/routes/_bounded_read.py +76 -0
- web/routes/board.py +1089 -0
- web/routes/cognition.py +1838 -0
- web/routes/config.py +635 -0
- web/routes/graph.py +513 -0
- web/routes/health.py +180 -0
- web/routes/hooks.py +288 -0
- web/routes/hub.py +1219 -0
- web/routes/logs.py +374 -0
- web/routes/metrics.py +43 -0
- web/routes/observability.py +400 -0
- web/routes/patterns.py +227 -0
- web/routes/presence.py +609 -0
- web/routes/roles.py +446 -0
- web/routes/scheduled.py +261 -0
- web/routes/search.py +238 -0
- web/routes/sessions.py +220 -0
- web/routes/settings.py +363 -0
- web/routes/stream.py +547 -0
- web/security.py +157 -0
- web/server.py +283 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Lean task template — see docs/phase-l-scrumban-task-system-plan.md
|
|
3
|
+
#
|
|
4
|
+
# AGENT: All four categorization axes are required (`epic` optional).
|
|
5
|
+
# `validate-task-frontmatter.sh` will reject this file on Write/Edit if any
|
|
6
|
+
# enum is wrong, swimlane is unknown, or `labels` overlaps `kind` values.
|
|
7
|
+
#
|
|
8
|
+
# Prefer creating tasks via `cos_task_create` MCP tool over hand-writing
|
|
9
|
+
# this YAML — the tool fills, validates, and persists in one call.
|
|
10
|
+
id: {{TASK_ID}}
|
|
11
|
+
title: "{{TITLE}}"
|
|
12
|
+
swimlane: {{SWIMLANE}} # DOMAIN — must exist in scrumban-config.yaml::swimlanes
|
|
13
|
+
kind: {{KIND}} # TYPE — feature | bug | chore | spike | docs | refactor | test | security
|
|
14
|
+
epic: {{EPIC|null}} # INITIATIVE — optional (e.g. phase-l, mvp, oncall-q2)
|
|
15
|
+
labels: {{LABELS|[]}} # FREE TAGS — must NOT contain kind values
|
|
16
|
+
priority: {{PRIORITY|P2}} # P0 critical | P1 high | P2 normal | P3 low
|
|
17
|
+
appetite: "{{APPETITE|1d}}" # Shape Up: 30m | 2h | 1d | 3d | 1w | 1cy
|
|
18
|
+
status: icebox # always start here; transition via cos_task_move
|
|
19
|
+
created: {{TODAY}}
|
|
20
|
+
started: null
|
|
21
|
+
completed: null
|
|
22
|
+
agent_session: null
|
|
23
|
+
depends_on: {{DEPENDS_ON|[]}} # hard block — these must complete first
|
|
24
|
+
blocked_by: [] # runtime block — agent fills with reason
|
|
25
|
+
references: {{REFERENCES|[]}} # soft relationship; sibling tasks
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# {{TASK_ID}}: {{TITLE}}
|
|
29
|
+
|
|
30
|
+
**Outcome (one sentence):** <!-- AGENT: ONE concrete sentence describing what
|
|
31
|
+
will be true when this task is done. Not a re-spec. Not a goal. A measurable
|
|
32
|
+
end-state with metric where possible. Bad: "improve auth". Good: "users log
|
|
33
|
+
in with email + OTP, P95 < 500ms, on iOS + Android + web". -->
|
|
34
|
+
|
|
35
|
+
## Read First
|
|
36
|
+
<!-- AGENT: ONLY links to existing docs/files. NEVER inline content from them.
|
|
37
|
+
If no relevant doc exists: (a) note "no doc — exploratory", or (b) create
|
|
38
|
+
the doc first via Formula 4 then link to it. Rule 15 forbids duplication. -->
|
|
39
|
+
|
|
40
|
+
- [path/to/doc.md](relative/path) — short reason
|
|
41
|
+
- [path/to/code.py](relative/path) — short reason
|
|
42
|
+
|
|
43
|
+
## Acceptance (G/W/T) — *this IS the Definition of Done*
|
|
44
|
+
<!-- AGENT: 1–3 Given/When/Then statements. Each becomes a test case.
|
|
45
|
+
When ALL pass, task is Done. Not "perfect" — Done. Scope-creep =
|
|
46
|
+
new task via cos_task_create. -->
|
|
47
|
+
|
|
48
|
+
- **Given** <precondition>
|
|
49
|
+
- **When** <action>
|
|
50
|
+
- **Then** <observable outcome with concrete metric>
|
|
51
|
+
|
|
52
|
+
## Work Log
|
|
53
|
+
<!-- AGENT: AUTO-APPENDED by capture-work-log.sh hook on Write/Edit.
|
|
54
|
+
Format: `- YYYY-MM-DD [agent-id | ses-NNNNNNNN]: <120-char summary>`.
|
|
55
|
+
NEVER rewrite. NEVER reformat. Append-only. Codex sessions: call
|
|
56
|
+
cos_work_log_append() explicitly (no PostToolUse hook). -->
|
|
57
|
+
|
|
58
|
+
## Rollback
|
|
59
|
+
<!-- AGENT: Optional but recommended. If purely additive: "Additive only.
|
|
60
|
+
Revert commit." If has migrations or shared-state mutations: list explicit
|
|
61
|
+
undo steps. -->
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<!-- domain:DOCS | layer:policy | ssot:true | updated:2026-05-08 -->
|
|
2
|
+
# Agent Workflow Policy
|
|
3
|
+
|
|
4
|
+
Purpose: Domain routing, task protocol, escalation, and memory contract — supplements `AGENTS.md` § Core Loop.
|
|
5
|
+
Read when: Multi-domain task, blast-radius doubt, escalation, or memory-flow question.
|
|
6
|
+
Skip when: Task clearly routed; AGENTS.md fragments suffice.
|
|
7
|
+
Read next: `task-lifecycle.md`, the matching playbook in `../playbooks/`.
|
|
8
|
+
|
|
9
|
+
> Nav: [Docs Index](../00-index.md) | [Docs System](./docs-system.md)
|
|
10
|
+
|
|
11
|
+
> Canonical execution loop is in `AGENTS.md` § Core Loop and `AGENTS.md` § Request Routing. This file holds policy detail not repeated there.
|
|
12
|
+
|
|
13
|
+
## Domain Classification Checklist
|
|
14
|
+
|
|
15
|
+
Multi-domain task — resolve by priority:
|
|
16
|
+
|
|
17
|
+
1. Security-sensitive? → security overlay required regardless of primary domain.
|
|
18
|
+
2. Backend models or API? → backend playbook (if installed).
|
|
19
|
+
3. Frontend components or pages? → frontend playbook (if installed).
|
|
20
|
+
4. Content, copy, or SEO? → content playbook (if installed).
|
|
21
|
+
5. Docs, governance, or workflow? → docs governance playbook (if installed).
|
|
22
|
+
6. Research / validation only? → research & validation playbook (if installed).
|
|
23
|
+
|
|
24
|
+
When two domains share weight, route to the higher blast-radius domain first.
|
|
25
|
+
|
|
26
|
+
**Blast radius ranking** (highest → lowest):
|
|
27
|
+
|
|
28
|
+
1. Database schema — affects all consumers, hard to roll back.
|
|
29
|
+
2. Backend API contracts — affects frontend + external integrations.
|
|
30
|
+
3. Backend business logic — data integrity, API responses.
|
|
31
|
+
4. Frontend state/routing — UX + navigation.
|
|
32
|
+
5. Frontend UI/styling — appearance only.
|
|
33
|
+
6. Documentation — no runtime impact.
|
|
34
|
+
|
|
35
|
+
## Task Protocol (Scrumban)
|
|
36
|
+
|
|
37
|
+
| Transition | Command | Effect |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| icebox → in_progress | `cos task-start TASK-<id>` | Marks the detail file `in_progress`, writes `.coding-os/<agent>/.task-current`, mirrors to the board DB, enforces WIP cap. |
|
|
40
|
+
| in_progress → testing | `cos task-move TASK-<id> --to testing` | Signals that the change is built and awaiting verification. |
|
|
41
|
+
| → done | `cos task-done TASK-<id>` | Validates Acceptance, appends Work Log, mirrors to the board DB, appends a `changes.log` entry. |
|
|
42
|
+
| → blocked | `cos task-move TASK-<id> --to blocked --reason "why"` | Records the blocker on the detail file and on the board. |
|
|
43
|
+
| Session bootstrap | `cos daily` | Surfaces WIP, blockers, age, and roadmap phase. |
|
|
44
|
+
|
|
45
|
+
The board state lives in `docs/tasks/TASK-<id>-<slug>.md` (canonical) and is mirrored to `.coding-os/coding-os.db` (derived index). There is no flat `docs/tasks.md` index; `cos board` renders the current state on demand.
|
|
46
|
+
|
|
47
|
+
`make task-*` wrappers exist only as thin aliases for the `cos task-*` commands; new automation should call `cos` directly.
|
|
48
|
+
|
|
49
|
+
## Change Initiation Path
|
|
50
|
+
|
|
51
|
+
Every non-trivial change follows this order — no skipping:
|
|
52
|
+
|
|
53
|
+
1. **PRD/spec** — define *what* and *why* (edit the doc first; Rule 19)
|
|
54
|
+
2. **Requirements / acceptance criteria** — atomic, testable
|
|
55
|
+
3. **Schema / migrations** — data shape before any code
|
|
56
|
+
4. **Code** — implement against spec
|
|
57
|
+
5. **Docs sync** — update any doc that drifted (`enforce-doc-sync.sh` surfaces these)
|
|
58
|
+
|
|
59
|
+
If two sources conflict: higher blast-radius wins (see Blast Radius ranking above). Update the lower-rank doc — never the higher.
|
|
60
|
+
|
|
61
|
+
## Minimal-Read & Context Hygiene
|
|
62
|
+
|
|
63
|
+
- Do not read an entire domain folder when one index file routes correctly.
|
|
64
|
+
- Stop reading when a file no longer changes the decision.
|
|
65
|
+
- Playbook Read Selection Guide caps at 10 files (most tasks 3–6).
|
|
66
|
+
- After reading: extract the fact into the task detail's Notes; drop the raw file from working memory.
|
|
67
|
+
- After commands (test/lint/build): keep pass/fail + key errors only; discard full output.
|
|
68
|
+
- Subagent results must be condensed summaries (≤2000 tokens), never raw dumps.
|
|
69
|
+
|
|
70
|
+
## Script Output Format
|
|
71
|
+
|
|
72
|
+
Task and infrastructure scripts use standardized prefixes:
|
|
73
|
+
|
|
74
|
+
- `OK: <message>` — success
|
|
75
|
+
- `ERROR: <message>` — fatal (exits 1)
|
|
76
|
+
- `WARN: <message>` — non-fatal (stderr)
|
|
77
|
+
- `INFO: <message>` — informational
|
|
78
|
+
|
|
79
|
+
## Escalation Rules
|
|
80
|
+
|
|
81
|
+
- Log contradictions and missing truth in `docs/_meta/questions.md`.
|
|
82
|
+
- Stop when product intent is not derivable from SSOT — never invent schema names, route shapes, or copy.
|
|
83
|
+
- RETRY_LIMIT — second identical failure with no new evidence → `cos task-move TASK-NNN --to blocked`.
|
|
84
|
+
|
|
85
|
+
<!-- if-module:memory -->
|
|
86
|
+
## Memory & Learning (Thinking OS)
|
|
87
|
+
|
|
88
|
+
Self-learning layer on the thinking_os MCP server (`.coding-os/coding-os.db`).
|
|
89
|
+
|
|
90
|
+
**Data flow:** Auto-Capture (per tool call) → Outcome Record (per task) → Learning Loop (every 10 tasks) → Memory Inject (next session).
|
|
91
|
+
|
|
92
|
+
**3-layer progressive disclosure** (memory queries):
|
|
93
|
+
|
|
94
|
+
1. `cos_search` — compact index (~50 tokens/result).
|
|
95
|
+
2. `cos_timeline` — chronological context (~150 tokens).
|
|
96
|
+
3. `cos_details` — full observation (~500 tokens).
|
|
97
|
+
|
|
98
|
+
**Learning Loop** (conditional, non-blocking): extracts patterns from outcomes, suggests rules at 3+ similar failures, tunes routing weights per domain × complexity. Runs every 10 completed tasks.
|
|
99
|
+
|
|
100
|
+
**Outcome types:** `success`, `rework`, `partial`, `blocked` — recorded for every task including blocked.
|
|
101
|
+
<!-- end-if -->
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
<!-- domain:DOCS | layer:policy | ssot:true | updated:2026-04-29 -->
|
|
2
|
+
# Stack Anatomy Contract
|
|
3
|
+
|
|
4
|
+
> P: Defines the canonical shape of `src/templates/<stack>/skills/<skill>/references/anatomy.md` so every stack and every agent (claude · codex) emits the same file structure, naming, and entity recipes.
|
|
5
|
+
> R: Authoring or auditing a stack's anatomy file; resolving disagreement between agents about where a new file belongs.
|
|
6
|
+
> S: Reading code — the actual conventions are in the per-stack `anatomy.md`, not here.
|
|
7
|
+
> N: [docs-system.md](docs-system.md), [scaffold-boundary-contract.md](scaffold-boundary-contract.md), `doc-cheat-sheet.md`
|
|
8
|
+
|
|
9
|
+
> Nav: [Governance Index](./00-index.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Why this contract exists
|
|
14
|
+
|
|
15
|
+
`anatomy.md` is the file every coding-os agent reads BEFORE it Writes any stack-specific source file. It answers four questions in <2 KB:
|
|
16
|
+
|
|
17
|
+
1. Where does file `X` live?
|
|
18
|
+
2. What is it named?
|
|
19
|
+
3. What does it depend on?
|
|
20
|
+
4. What is the recipe to add a new entity (endpoint / model / component / screen / handler / migration / test)?
|
|
21
|
+
|
|
22
|
+
If two stacks (or two agents) disagree on these answers, multi-stack projects rot. This contract makes the answer machine-checkable.
|
|
23
|
+
|
|
24
|
+
## Token budget
|
|
25
|
+
|
|
26
|
+
Hard cap: **2000 tokens** per anatomy.md. If a stack's anatomy is bigger, split entity recipes into siblings (`anatomy-models.md`, `anatomy-endpoints.md`) and link from the main anatomy.
|
|
27
|
+
|
|
28
|
+
## File location
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
src/templates/<stack>/skills/<primary_skill>/references/anatomy.md
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Anatomy lives next to its skill, not in `src/templates/<stack>/scaffold/docs/`. Reason: `cos init` copies scaffold ONCE; references load lazily forever.
|
|
35
|
+
|
|
36
|
+
## Required frontmatter
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<!-- domain:STACK_DOMAIN | layer:reference | ssot:true | updated:YYYY-MM-DD -->
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`STACK_DOMAIN` is the uppercased stack id with hyphens removed: `nextjs` → `NEXTJS`, `go-fiber` → `GOFIBER`, `react-native` → `REACTNATIVE`.
|
|
43
|
+
|
|
44
|
+
## Required opening block
|
|
45
|
+
|
|
46
|
+
Short form (`> P:` / `> R:` / `> S:` / `> N:`) — anatomy is a high-traffic routing file, short form is mandatory to save tokens.
|
|
47
|
+
|
|
48
|
+
## Required H2 sections (this exact order)
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
## 1. Boundary
|
|
52
|
+
## 2. Layout map
|
|
53
|
+
## 3. Entity recipes
|
|
54
|
+
## 4. Conventions
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The contract test (`tests/test_anatomy_contract.py`) rejects any anatomy missing one of these or reordering them.
|
|
58
|
+
|
|
59
|
+
### 1. Boundary
|
|
60
|
+
|
|
61
|
+
ONE line that links to the machine-readable SSOT — no table, no duplicated fields:
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
SSOT: `src/templates/<stack>/scaffold-boundary.yaml`.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Rationale: duplication of `roots` / `imports_from` / `forbids_writing_in` in prose creates drift. The yaml is the only canonical source; humans read it directly via the link.
|
|
68
|
+
|
|
69
|
+
### 2. Layout map
|
|
70
|
+
|
|
71
|
+
A table — one row per file pattern this stack produces:
|
|
72
|
+
|
|
73
|
+
| Pattern | Location | Naming | Imports from | Description |
|
|
74
|
+
|
|
75
|
+
Order rows top-down by frequency: most-edited file first.
|
|
76
|
+
|
|
77
|
+
### 3. Entity recipes
|
|
78
|
+
|
|
79
|
+
One H3 per entity type the stack supports. Each H3 carries:
|
|
80
|
+
|
|
81
|
+
- **Trigger:** the user request that invokes this recipe.
|
|
82
|
+
- **Files emitted:** numbered list of paths (use `<name>` for the parameter).
|
|
83
|
+
- **Steps:** numbered, terse — each step ≤1 line.
|
|
84
|
+
- **Optional generator script:** `src/scripts/<name>.py` if the stack ships one.
|
|
85
|
+
|
|
86
|
+
Common entity types (use these names verbatim when applicable):
|
|
87
|
+
|
|
88
|
+
- `Add a new endpoint` (backend stacks)
|
|
89
|
+
- `Add a new model` (any data-bearing stack)
|
|
90
|
+
- `Add a new component` (frontend stacks)
|
|
91
|
+
- `Add a new screen` (mobile stacks)
|
|
92
|
+
- `Add a new migration` (db-bearing stacks)
|
|
93
|
+
- `Add a new test` (universal — required in every anatomy)
|
|
94
|
+
|
|
95
|
+
### 4. Conventions
|
|
96
|
+
|
|
97
|
+
ONE H2 with three terse subsections — each MUST be present even if empty:
|
|
98
|
+
|
|
99
|
+
#### Naming
|
|
100
|
+
|
|
101
|
+
Bullet list. Each bullet maps a thing → its rule. Examples: `kebab-case.tsx`, `camelCase` functions, `SCREAMING_SNAKE_CASE` constants.
|
|
102
|
+
|
|
103
|
+
#### Test colocation
|
|
104
|
+
|
|
105
|
+
State the rule once. Two patterns are accepted:
|
|
106
|
+
|
|
107
|
+
- **Colocated:** `users/users.test.ts` next to `users/users.ts`.
|
|
108
|
+
- **Mirrored:** `tests/users/test_users.py` mirrors `src/users/users.py`.
|
|
109
|
+
|
|
110
|
+
Pick one per stack. Mixed = rejected by lint.
|
|
111
|
+
|
|
112
|
+
#### Dependency rules
|
|
113
|
+
|
|
114
|
+
Bullet list of allowed / forbidden import directions. MUST agree with `scaffold-boundary.yaml::imports_from`. Drift = test failure.
|
|
115
|
+
|
|
116
|
+
## Authoring rules
|
|
117
|
+
|
|
118
|
+
- **Lead with verbs.** `Returns`, not `This will return`.
|
|
119
|
+
- **Tables beat prose.** If a section is >5 prose sentences, refactor into a table.
|
|
120
|
+
- **No prose ≥10 words explaining what the code does.** Code is the doc.
|
|
121
|
+
- **No screenshots.** Diagrams are `.svg` or `.mermaid` siblings.
|
|
122
|
+
- **No version markers in body.** Version lives in frontmatter `updated:` only.
|
|
123
|
+
|
|
124
|
+
## Cross-agent uniformity guarantee
|
|
125
|
+
|
|
126
|
+
Three guarantees that make every agent emit identical-shape anatomy:
|
|
127
|
+
|
|
128
|
+
1. **Schema is mechanical.** Required sections + table columns mean diff against the schema is unambiguous.
|
|
129
|
+
2. **Lint enforces it.** `tests/test_anatomy_contract.py` runs on every PR.
|
|
130
|
+
3. **Token budget is a hard cap.** No agent can pad — every line costs.
|
|
131
|
+
|
|
132
|
+
Agents (claude, codex) read the same `anatomy.md` and produce the same scaffold-growth output because the recipe section is the source of truth. The agent does not invent file paths — it follows the recipe.
|
|
133
|
+
|
|
134
|
+
## Adding a new entity recipe
|
|
135
|
+
|
|
136
|
+
1. Open `anatomy.md` for the stack.
|
|
137
|
+
2. Append H3 under § 3 in alphabetical order (rule: keep `Add a new test` last).
|
|
138
|
+
3. Run `make docs-lint` (frontmatter + nav check).
|
|
139
|
+
4. If you ship a generator, drop the script under `src/templates/<stack>/skills/<skill>/scripts/<name>.py`.
|
|
140
|
+
5. Reference the script from the recipe's "Optional generator script" line.
|
|
141
|
+
|
|
142
|
+
## When a stack legitimately can't satisfy the schema
|
|
143
|
+
|
|
144
|
+
Some stacks (e.g. a future `infra-only` template) won't have models or components. They MUST still ship anatomy.md with each H2 present — empty sections carry the literal line:
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
_Not applicable to this stack._
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
This is contract-compliant. The lint accepts it.
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<!-- domain:DOCS | layer:policy | ssot:true | updated:2026-05-13 -->
|
|
2
|
+
# Critical Rules — Full Text
|
|
3
|
+
|
|
4
|
+
Purpose: Canonical expansion of every numbered rule listed in `AGENTS.md` § Critical Rules. AGENTS.md keeps the 1-line summary; this file is the rationale + enforcement reference.
|
|
5
|
+
Read when: A hook just blocked an action and cited a rule number, OR you are about to touch governance / hooks / MCP surfaces and need the full rationale.
|
|
6
|
+
Skip when: You only need the 1-line summary — read AGENTS.md instead.
|
|
7
|
+
Read next: [docs-system.md](docs-system.md), [agent-workflow.md](agent-workflow.md), [decision-records.md](decision-records.md)
|
|
8
|
+
|
|
9
|
+
> Nav: [Docs Index](../00-index.md) | [Governance Index](./)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Conventions
|
|
14
|
+
|
|
15
|
+
- Every rule below uses the same 4-row structure: **Rule** · **Why** · **How (enforcement)** · **Where**.
|
|
16
|
+
- “Hook” means a script under `src/core/hooks/` registered in `src/core/hooks/registry.yaml`; the renderer surfaces it in each adapter.
|
|
17
|
+
- Rule numbers are stable — never reorder, only append.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Rule 0 — Docs-first
|
|
22
|
+
|
|
23
|
+
- **Rule:** Every code `Write`/`Edit` must trace to a doc path recorded in `$COS_AGENT_DIR/.doc-anchor`.
|
|
24
|
+
- **Why:** Code without a documented spec is technical debt the moment it merges. The anchor forces an answer to “which doc does this code implement?”.
|
|
25
|
+
- **How:** Hook `enforce-doc-anchor.sh` (PreToolUse Write|Edit) blocks code writes when `.doc-anchor` is empty or stale.
|
|
26
|
+
- **Where:** `src/core/hooks/enforce-doc-anchor.sh`
|
|
27
|
+
|
|
28
|
+
## Rule 1 — Never hardcode `.claude/` in `core/`
|
|
29
|
+
|
|
30
|
+
- **Rule:** Use `$COS_AGENT_DIR` (per-agent), `$COS_STATE_DIR` (shared), `$COS_DB_PATH`. Session-id at `$COS_AGENT_DIR/session-id`. Sid string format: `ses-{agent}-YYYYMMDD-…`.
|
|
31
|
+
- **Why:** `.claude/` is one of N adapter dirs (`.codex/`, …). Hardcoding breaks adapter parity (P2).
|
|
32
|
+
- **How:** Hook `block-bad-patterns.sh` greps `src/core/**` for `.claude/`. Adapter resolves env at session start via `src/core/hooks/cos-env.sh`.
|
|
33
|
+
- **Where:** `src/core/hooks/cos-env.sh`
|
|
34
|
+
|
|
35
|
+
## Rule 2 — MCP tool names use `cos_*` prefix
|
|
36
|
+
|
|
37
|
+
- **Rule:** Every public MCP tool exposed by thinking_os/graph_os/board_os is named `cos_<verb>_<noun>` (e.g. `cos_doc_search`, `cos_task_create`).
|
|
38
|
+
- **Why:** Single namespace; consumer projects can grep one prefix; MCP clients can filter.
|
|
39
|
+
- **How:** Tests in `src/core/thinking_os/tests/test_tool_naming.py` reject non-prefixed exports.
|
|
40
|
+
- **Where:** [docs/governance/mcp-tool-inventory.md](mcp-tool-inventory.md)
|
|
41
|
+
|
|
42
|
+
## Rule 3 — Hooks source `cos-env.sh`
|
|
43
|
+
|
|
44
|
+
- **Rule:** Every hook starts with `source "$(dirname "$0")/cos-env.sh" 2>/dev/null || true`.
|
|
45
|
+
- **Why:** Resolves `$COS_*` env vars once. Removes per-hook env discovery code.
|
|
46
|
+
- **How:** Hook `verify-hook-shape.sh` rejects new hooks missing the source line.
|
|
47
|
+
- **Where:** `src/core/hooks/cos-env.sh`
|
|
48
|
+
|
|
49
|
+
## Rule 4 — Scripts search config chain
|
|
50
|
+
|
|
51
|
+
- **Rule:** Lookup order is `$COS_STATE_DIR/domain-config.json` → `infrastructure/scripts/domain-config.json`.
|
|
52
|
+
- **Why:** Per-project state wins; repo defaults fall back. Same file shape in both locations.
|
|
53
|
+
- **How:** Helper `src/core/hooks/find-config.sh` encodes the chain. Scripts call it; never reinvent the lookup.
|
|
54
|
+
- **Where:** `src/core/hooks/find-config.sh`
|
|
55
|
+
|
|
56
|
+
## Rule 5 — Path resolution: `.resolve()` before `.relative_to()`
|
|
57
|
+
|
|
58
|
+
- **Rule:** On macOS `/tmp` symlinks to `/private/tmp`; relative-path math without `.resolve()` raises `ValueError`.
|
|
59
|
+
- **Why:** Subtle CI breakage; tests pass on Linux, fail on macOS.
|
|
60
|
+
- **How:** Pylint custom rule `cos-path-resolve` flags `Path(...).relative_to(...)` without preceding `.resolve()`.
|
|
61
|
+
- **Where:** `src/core/thinking_os/utils/paths.py`
|
|
62
|
+
|
|
63
|
+
## Rule 6 — Fire-and-forget needs explicit exception handling
|
|
64
|
+
|
|
65
|
+
- **Rule:** Background work uses an `_<name>_safe()` wrapper with `except Exception as exc: logger.debug("…", exc_info=exc)`. Bare `except: pass` is rejected.
|
|
66
|
+
- **Why:** Silent swallows hide bugs; `logger.debug` keeps the stack trace recoverable without spamming.
|
|
67
|
+
- **How:** Hook `block-bad-patterns.sh` rejects bare `except` in any `_safe()` helper.
|
|
68
|
+
- **Where:** `src/core/thinking_os/tools/_shared.py`
|
|
69
|
+
|
|
70
|
+
## Rule 7 — Governance edits require explicit task name
|
|
71
|
+
|
|
72
|
+
- **Rule:** Edits to `AGENTS.md`, `.coding-os/`, `src/core/rules/`, `src/core/hooks/` require the active task to mention `docs-update` or `governance` in title or labels.
|
|
73
|
+
- **Why:** Governance drift is the most expensive drift to undo; every change must be auditable to a task.
|
|
74
|
+
- **How:** Hook `block-protected-files.sh` reads the active TASK title/labels and refuses unauthorized edits.
|
|
75
|
+
- **Where:** `src/core/hooks/block-protected-files.sh`
|
|
76
|
+
|
|
77
|
+
## Rule 8 — Multi-step verification = Python, never bash heredoc inside `$(...)` with `uv run`
|
|
78
|
+
|
|
79
|
+
- **Rule:** Write a `.py` file and call `subprocess.run([...], timeout=N)`. Do not pipe a heredoc into `uv run python -`.
|
|
80
|
+
- **Why:** Bash 5.3.9 + `uv run` + heredoc = silent deadlock. Documented incident: hook-startup hang, 2026-03.
|
|
81
|
+
- **How:** Hook `block-uv-heredoc.sh` rejects the pattern at PreToolUse Bash.
|
|
82
|
+
- **Where:** `src/scripts/verify_phase_c_e2e.py`
|
|
83
|
+
|
|
84
|
+
## Rule 9 — Schema migrations are append-only
|
|
85
|
+
|
|
86
|
+
- **Rule:** New tables → migration `vN+1`. Never edit a past migration’s body.
|
|
87
|
+
- **Why:** Migrations run once per consumer DB; editing the past silently diverges schemas.
|
|
88
|
+
- **How:** Hook `block-migration-conflict.sh` rejects duplicate version numbers in `src/core/thinking_os/database.py`.
|
|
89
|
+
- **Where:** `src/core/thinking_os/database.py`
|
|
90
|
+
|
|
91
|
+
## Rule 10 — Regenerate derived artifacts
|
|
92
|
+
|
|
93
|
+
- **Rule:** Edit source, then run `make regen-rules` + `make manifest-regen` + `make regen-adapter-templates`. Never hand-edit derived files.
|
|
94
|
+
- **Why:** `src/core/scaffold_manifest.json`, `src/core/rules/dimension-registry.md`, `src/core/rules/skill-enforcement.md`, `adapters/{claude,codex}/*.template.*`, `tests/golden/**` are generated.
|
|
95
|
+
- **How:** Hook `regen-reminder.sh` (PostToolUse Write|Edit on source files) prints the regen command. `warn-template-drift.sh` flags hand-edits to derived files.
|
|
96
|
+
- **Where:** `Makefile`
|
|
97
|
+
|
|
98
|
+
## Rule 11 — No hardcoded stack/adapter literals in `src/cli/*.py`
|
|
99
|
+
|
|
100
|
+
- **Rule:** No quoted `"django"` / `"claude"` strings in CLI code. Read from `src/templates/<stack>/stack.yaml` / `src/adapters/<agent>/adapter.yaml`.
|
|
101
|
+
- **Why:** Adding a new stack/adapter must be a yaml change, never a code change.
|
|
102
|
+
- **How:** Hook `block-hardcoded-literals.sh` greps `src/cli/*.py`. Test `tests/test_no_hardcoded_stacks.py` enforces in CI.
|
|
103
|
+
- **Where:** `src/cli/main.py`
|
|
104
|
+
|
|
105
|
+
## Rule 12 — Comments by exception, not by default
|
|
106
|
+
|
|
107
|
+
- **Rule:** Default to NO comments and NO docstrings. Code reads like prose;
|
|
108
|
+
good names and small functions remove the need. Add a comment only when
|
|
109
|
+
the WHY is non-obvious: a hidden constraint, subtle invariant, workaround
|
|
110
|
+
for a specific bug, or behavior that would surprise a reader.
|
|
111
|
+
- **Exception — public MCP tools (`@mcp.tool` decorated functions):**
|
|
112
|
+
ONE-line docstring is permitted because FastMCP exposes it as the tool
|
|
113
|
+
description to the client. Keep it under 80 chars. No multi-section
|
|
114
|
+
PURPOSE/INPUT/OUTPUT/DEPENDENCIES/NOTES blocks — they bloat tokens and
|
|
115
|
+
duplicate what arg names and types already convey.
|
|
116
|
+
- **Why:** Comments rot, names don't (well-named code stays self-describing).
|
|
117
|
+
Long header blocks balloon every file and burn tokens on every read for
|
|
118
|
+
zero runtime benefit. Past convention was wrong; legacy `PURPOSE / INPUT
|
|
119
|
+
/ OUTPUT / DEPENDENCIES / NOTES` blocks are a tech debt to be removed
|
|
120
|
+
when touching a file, not a pattern to extend.
|
|
121
|
+
- **How:** No automated enforcement (was never in any active hook). Code
|
|
122
|
+
review rejects new PURPOSE/INPUT/OUTPUT blocks; `block-bad-patterns.sh`
|
|
123
|
+
already blocks bare `except: pass`-style noise.
|
|
124
|
+
- **Where:** `src/core/skills/clean-code/SKILL.md` §Self-Documenting
|
|
125
|
+
|
|
126
|
+
## Rule 13 — MCP tool response envelope
|
|
127
|
+
|
|
128
|
+
- **Rule:** Every `cos_*` tool returns via `ok(data)` / `fail(category, message)`. Wrapped in `@safe_tool`. Categories: `transient | validation | permission | not_found | unavailable | internal`.
|
|
129
|
+
- **Why:** Single-shape envelope means clients can parse without per-tool branching; categories drive retry vs. abort.
|
|
130
|
+
- **How:** Test `src/core/thinking_os/tests/test_envelope.py` rejects non-conforming returns.
|
|
131
|
+
- **Where:** `src/core/thinking_os/tools/_shared.py` · contract: [docs/engineering/mcp-error-envelope.md](../engineering/mcp-error-envelope.md)
|
|
132
|
+
|
|
133
|
+
## Rule 14 — Tasks are pointers, not specs
|
|
134
|
+
|
|
135
|
+
- **Rule:** `docs/tasks/TASK-NNN-slug.md` MUST NOT inline content already in `docs/**` / `src/core/rules/**` / `AGENTS.md`. Four orthogonal axes: `swimlane` · `kind` (8-value enum) · `epic` · `labels` (never kind values).
|
|
136
|
+
- **Why:** Tasks rot; canonical docs are reviewed. Inlining causes silent divergence.
|
|
137
|
+
- **How:** Hook `lint-task.sh` warns >1.5k tokens, blocks >3k. `cos task-validate` rejects label values that collide with kind enum.
|
|
138
|
+
- **Where:** `src/core/board_os/parser.py`
|
|
139
|
+
|
|
140
|
+
## Rule 15 — Role chain composed for COMPLICATED+ tasks
|
|
141
|
+
|
|
142
|
+
- **Rule:** Call `cos_compose_chain(signals)`; result written to `.coding-os/<agent>/.roles` + `.role`. Roles ARE the 11 formulas, addressed by semantic id: `researcher · analyst · architect · documenter · implementer · reviewer · debugger · security_auditor · deployer · observer · refactorer`.
|
|
143
|
+
- **Why:** Hard problems need a sequenced chain of formulas. Composing once at task start avoids mid-task formula thrash.
|
|
144
|
+
- **How:** Routing yaml at `src/core/thinking_os/roles/`, prompts at `src/core/thinking_os/agents/`. Source spec citation `Formula 1..11` retained only in `formulas-en.md`.
|
|
145
|
+
- **Where:** `src/core/thinking_os/roles/` · `src/core/thinking_os/agents/`
|
|
146
|
+
|
|
147
|
+
## Rule 16 — Formula dispatch produces typed EvidenceBundle
|
|
148
|
+
|
|
149
|
+
- **Rule:** Every formula records via `cos_supervise_record_output(formula_id, output_json)` matching the formula’s `output_schema` Pydantic model.
|
|
150
|
+
- **Why:** Without a typed output, multi-formula chains can’t verify hand-off correctness; supervisor can’t replay.
|
|
151
|
+
- **How:** `cos_supervise` validates the JSON against the formula schema before storing.
|
|
152
|
+
- **Where:** `src/core/thinking_os/dispatchers/`
|
|
153
|
+
|
|
154
|
+
## Rule 17 — Situational Paths override role chain
|
|
155
|
+
|
|
156
|
+
- **Rule:** When `.coding-os/<agent>/.situation` is set, the situational path wins over the composed role chain. Six situations: `incident-response · onboarding · scope-change · external-integration · design-review · existing-project-takeover`.
|
|
157
|
+
- **Why:** “Production is on fire” needs a different sequence than a feature build, even if the dimensions look similar.
|
|
158
|
+
- **How:** Dispatcher reads `.situation` before `.roles`.
|
|
159
|
+
- **Where:** `src/core/thinking_os/situations/`
|
|
160
|
+
|
|
161
|
+
## Rule 18 — Task reconciliation is mandatory before implementation
|
|
162
|
+
|
|
163
|
+
- **Rule:** For every non-trivial user request: first check existing tasks via `cos_task_board` / `cos task-show`. Reuse when matched; otherwise create one, fill `Outcome` / `Read First` / `Acceptance`, then move `in_progress → testing → complete` (or `blocked` with explicit blocker).
|
|
164
|
+
- **Why:** Otherwise tasks duplicate, board state diverges from reality, and progress can’t be measured.
|
|
165
|
+
- **How:** No hook (yet) — convention enforced via review + memory.
|
|
166
|
+
- **Where:** [docs/governance/task-lifecycle.md](task-lifecycle.md)
|
|
167
|
+
|
|
168
|
+
## Rule 19 — Docs are the contract — never extend code beyond doc spec
|
|
169
|
+
|
|
170
|
+
- **Rule:** If the doc says “registration takes username, password, name”, do NOT add a `birthdate` field because it “feels needed”. Edit the doc first, then the code.
|
|
171
|
+
- **Why:** Code-first changes silently extend the contract; consumers read the doc, not the diff.
|
|
172
|
+
- **How:** Pair: Rule 0 anchors new code TO a doc going IN; `enforce-doc-sync.sh` (PostToolUse Write|Edit|MultiEdit) surfaces docs that drifted going OUT — three signals: (a) symbol removed/renamed + doc still mentions it, (b) signature changed (param-count diff), (c) doc mtime older than code AND mentions a current symbol. Collaborates with thinking_os FTS5 index for accurate doc lookup + graph_os `cos_graph_references` for impact context. WARN class — agent must act.
|
|
173
|
+
- **Where:** `src/core/hooks/enforce-doc-sync.sh`
|
|
174
|
+
|
|
175
|
+
## Rule 20 — Test discipline: matrix command only, never broad sweep mid-task
|
|
176
|
+
|
|
177
|
+
- **Rule:** `pytest tests/ -q` runs 743 integration tests (~6 min). Match changed files → matrix command (15s–90s) per `test-discipline.md`. Full sweep is permitted **only** pre-merge/release, cross-cutting refactor touching ≥3 matrix rows, or when the user explicitly asks. Single-test debug: `pytest path::TestClass::test_name -v` before re-running the file.
|
|
178
|
+
- **Why:** Six minutes per change × N iterations = the user waits and productivity dies.
|
|
179
|
+
- **How:** Convention + Rule. SSOT is `src/core/rules/test-discipline.md`; AGENTS.md § Verification Matrix mirrors it.
|
|
180
|
+
- **Where:** `src/core/rules/test-discipline.md`
|
|
181
|
+
|
|
182
|
+
## Rule 21 — Never use `isolation: "worktree"` in this repo
|
|
183
|
+
|
|
184
|
+
- **Rule:** Subagent dispatch is allowed **only** for read-only research / inventory / verification (Agent tool without `isolation`). Write work runs single-agent on the main working tree. Never pass `isolation: "worktree"` to the Agent tool.
|
|
185
|
+
- **Why:** Past worktree runs left orphaned `.claude/worktrees/<slug>/` plus locked `worktree-*` branches with broken `.git` links — required manual `find .git/worktrees/...` cleanup and deadlocked sessions.
|
|
186
|
+
- **How:** Convention. The `worktree-orchestration` skill has been removed from `src/core/skills/` and `src/templates/_base/base.yaml`. Reviewers reject re-introduction.
|
|
187
|
+
- **Where:** [AGENTS.md](../../AGENTS.md) § Critical Rules
|
|
188
|
+
|
|
189
|
+
## Rule 22 — Anti-overengineering
|
|
190
|
+
|
|
191
|
+
- **Rule:** Solve the problem in front of you with the smallest correct change. Reuse what exists, do not speculate, do not duplicate. Five sub-rules: (1) **Reuse-First** — search graph / docs / grep before writing anything; (2) **No-Speculation** — build only what the current task requires, no "might need it later"; (3) **Diff-Minimal** — smallest correct change, bug-fix-only commits, no ride-along refactors; (4) **No-Premature-Abstraction (Rule of Three)** — extract only when three divergent call sites need it; (5) **Defer-by-Default** — ask "what can I remove?" at task close. Applies to **every artifact** — code, docs, hooks, skills, templates, tests, CLI, configs.
|
|
192
|
+
- **Why:** Every line written is paid for forever. Over-engineering grows surface area, hides intent, slows review, and trains the next agent that bloat is the house pattern. In an enterprise codebase the cumulative cost dominates any single addition.
|
|
193
|
+
- **How:** Convention — automated detection is too false-positive-prone (numeric thresholds, abstraction counts, file additions). Enforcement is the reality-check matrix in the rule body, code review, and `cos_search` observations that surface prior incidents. Tactical instances (no abbreviations, no magic numbers, no positional booleans, nesting ≤ 2) are enforced through the `clean-code` skill.
|
|
194
|
+
- **Where:** `src/core/rules/anti-overengineering.md`. Cross-links: `api-contract-discipline.md`, `test-discipline.md`, `clean-code skill`.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Rule Index (quick lookup)
|
|
199
|
+
|
|
200
|
+
| # | Rule | Hook |
|
|
201
|
+
|---|---|---|
|
|
202
|
+
| 0 | Docs-first | enforce-doc-anchor.sh |
|
|
203
|
+
| 1 | No `.claude/` in core | block-bad-patterns.sh |
|
|
204
|
+
| 2 | `cos_*` prefix | test_tool_naming.py |
|
|
205
|
+
| 3 | Hooks source cos-env.sh | verify-hook-shape.sh |
|
|
206
|
+
| 4 | Config chain | find-config.sh |
|
|
207
|
+
| 5 | `.resolve()` before `.relative_to()` | pylint custom |
|
|
208
|
+
| 6 | Fire-and-forget exception handling | block-bad-patterns.sh |
|
|
209
|
+
| 7 | Governance task name | block-protected-files.sh |
|
|
210
|
+
| 8 | No bash heredoc with `uv run` | block-uv-heredoc.sh |
|
|
211
|
+
| 9 | Append-only migrations | block-migration-conflict.sh |
|
|
212
|
+
| 10 | Regenerate derived artifacts | regen-reminder.sh + warn-template-drift.sh |
|
|
213
|
+
| 11 | No hardcoded literals in cli/ | block-hardcoded-literals.sh |
|
|
214
|
+
| 12 | Function header convention | lint-function-header.sh |
|
|
215
|
+
| 13 | MCP envelope `ok`/`fail` | test_envelope.py |
|
|
216
|
+
| 14 | Tasks are pointers | lint-task.sh |
|
|
217
|
+
| 15 | Role chain composed | (none — convention) |
|
|
218
|
+
| 16 | Typed EvidenceBundle | cos_supervise validation |
|
|
219
|
+
| 17 | Situational Paths override | (none — dispatcher logic) |
|
|
220
|
+
| 18 | Task reconciliation | (none — convention) |
|
|
221
|
+
| 19 | Docs are contract | enforce-doc-sync.sh |
|
|
222
|
+
| 20 | Test discipline | (none — convention) |
|
|
223
|
+
| 21 | No worktree isolation | (none — convention) |
|
|
224
|
+
| 22 | Anti-overengineering | (none — convention; clean-code skill for tactical) |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- domain:DOCS | layer:reference | ssot:true | updated:{{DATE}} -->
|
|
2
|
+
# Decision Records
|
|
3
|
+
|
|
4
|
+
Purpose: Define where durable architectural decisions live and how to reference them from tasks and governance docs.
|
|
5
|
+
Read when: A change introduces or depends on a long-lived technical decision.
|
|
6
|
+
Skip when: The task only needs an already-linked ADR and no decision-model update is required.
|
|
7
|
+
Read next: `../architecture/adr/00-index.md`
|
|
8
|
+
|
|
9
|
+
> Nav: [Docs Index](../00-index.md) | [ADR Index](../architecture/adr/00-index.md)
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- Stable architectural decisions belong in ADR files under `docs/architecture/adr/`.
|
|
14
|
+
- Governance docs may summarize decisions, but ADR files are canonical.
|
|
15
|
+
- Historical migration decisions that are no longer active belong in governance archive docs, not evergreen architecture pages.
|
|
16
|
+
|
|
17
|
+
## When to Create an ADR
|
|
18
|
+
|
|
19
|
+
- Provider choice with long-lived impact (e.g. payment provider, mail service)
|
|
20
|
+
- Security model change
|
|
21
|
+
- Infra/runtime tradeoff with operational consequences
|
|
22
|
+
- Schema or API strategy that future work must inherit
|
|
23
|
+
- Library or framework version pin with migration cost
|
|
24
|
+
|
|
25
|
+
## ADR Template
|
|
26
|
+
|
|
27
|
+
Each ADR follows this structure:
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
<!-- domain:XXX | layer:adr | ssot:true | updated:YYYY-MM-DD -->
|
|
31
|
+
# ADR-NNN: Short Decision Title
|
|
32
|
+
|
|
33
|
+
> Nav: [ADR Index](./00-index.md)
|
|
34
|
+
|
|
35
|
+
## Status
|
|
36
|
+
|
|
37
|
+
Proposed | Accepted | Deprecated | Superseded by ADR-XXX
|
|
38
|
+
|
|
39
|
+
## Context
|
|
40
|
+
|
|
41
|
+
What is the issue we're seeing that motivates this decision?
|
|
42
|
+
|
|
43
|
+
## Decision
|
|
44
|
+
|
|
45
|
+
What is the change we're actually proposing or doing?
|
|
46
|
+
|
|
47
|
+
## Consequences
|
|
48
|
+
|
|
49
|
+
What becomes easier or harder as a result of this change?
|
|
50
|
+
|
|
51
|
+
## Alternatives Considered
|
|
52
|
+
|
|
53
|
+
Which alternatives were considered and why were they rejected?
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Numbering
|
|
57
|
+
|
|
58
|
+
ADRs use sequential 3-digit numbering: `ADR-001-...md`, `ADR-002-...md`, etc. Numbers are never reused, even when an ADR is superseded.
|