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
core/hooks/registry.yaml
ADDED
|
@@ -0,0 +1,1262 @@
|
|
|
1
|
+
# Hook Registry โ SSOT for hook registration metadata.
|
|
2
|
+
#
|
|
3
|
+
# Each hook is declared ONCE here. src/cli/hook_renderer.py reads this file
|
|
4
|
+
# and produces adapter-specific settings files:
|
|
5
|
+
# src/adapters/claude/settings.template.json (rendered)
|
|
6
|
+
# src/adapters/codex/hooks.template.json (rendered)
|
|
7
|
+
#
|
|
8
|
+
# Adding a hook:
|
|
9
|
+
# 1. Drop the script in src/core/hooks/<name>.sh
|
|
10
|
+
# 2. Append an entry here (fields below)
|
|
11
|
+
# 3. Run: make regen-adapter-templates
|
|
12
|
+
# 4. Run: make dogfood-full (re-install adapters in this repo)
|
|
13
|
+
#
|
|
14
|
+
# Hook fields:
|
|
15
|
+
# id โ logical name (= script basename without .sh)
|
|
16
|
+
# script โ filename in src/core/hooks/
|
|
17
|
+
# description โ one-line purpose (shown in `cos hooks-list`)
|
|
18
|
+
# category โ safety | enforcement | observability | reminder | meta
|
|
19
|
+
# phase โ development phase when added (0 | E | F | G | ...)
|
|
20
|
+
# timeout โ SECONDS (Claude Code / Codex contract); omit if none.
|
|
21
|
+
# Verified empirically 2026-05-19 against
|
|
22
|
+
# `Slow PreToolUse hooks: 1500057ms` log line that
|
|
23
|
+
# matched timeout=1500 exactly. Keep values <= 30 so
|
|
24
|
+
# a single hung hook can't stall the agent for
|
|
25
|
+
# minutes (or the 60s subprocess-init ceiling fires).
|
|
26
|
+
# events โ list of {event, matcher, status_message}
|
|
27
|
+
#
|
|
28
|
+
# Event/matcher pairs are filtered against each adapter's declared
|
|
29
|
+
# capabilities in src/adapters/<agent>/adapter.yaml::capabilities. A pair
|
|
30
|
+
# the adapter cannot fire is skipped in that adapter's output.
|
|
31
|
+
|
|
32
|
+
version: 1
|
|
33
|
+
|
|
34
|
+
hooks:
|
|
35
|
+
# โโ safety โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
36
|
+
- id: block-secrets
|
|
37
|
+
script: block-secrets.sh
|
|
38
|
+
description: Scans command and file content for credentials (AWS keys, tokens, .env leaks).
|
|
39
|
+
category: safety
|
|
40
|
+
phase: "0"
|
|
41
|
+
timeout: 5
|
|
42
|
+
events:
|
|
43
|
+
- event: PreToolUse
|
|
44
|
+
matcher: Bash
|
|
45
|
+
status_message: "๐ Scanning command for credentials..."
|
|
46
|
+
- event: PreToolUse
|
|
47
|
+
matcher: Write|Edit
|
|
48
|
+
status_message: "๐ Scanning file content for credentials..."
|
|
49
|
+
|
|
50
|
+
- id: block-dangerous-commands
|
|
51
|
+
script: block-dangerous-commands.sh
|
|
52
|
+
description: Blocks destructive commands (rm -rf, force-push, reset --hard) without confirmation.
|
|
53
|
+
category: safety
|
|
54
|
+
phase: "0"
|
|
55
|
+
timeout: 5
|
|
56
|
+
events:
|
|
57
|
+
- event: PreToolUse
|
|
58
|
+
matcher: Bash
|
|
59
|
+
status_message: "๐ก๏ธ Checking command safety (rm, force-push, reset)..."
|
|
60
|
+
|
|
61
|
+
- id: branch-guard
|
|
62
|
+
script: branch-guard.sh
|
|
63
|
+
description: Enforces trunk-based git integrity โ blocks branch/worktree creation AND HEAD-rewriting ops (`reset <ref>`, `checkout/switch <other-branch>`) in trunk mode.
|
|
64
|
+
category: enforcement
|
|
65
|
+
phase: "0"
|
|
66
|
+
timeout: 5
|
|
67
|
+
events:
|
|
68
|
+
- event: PreToolUse
|
|
69
|
+
matcher: Bash
|
|
70
|
+
status_message: "๐ณ Enforcing trunk-based workflow (no branches)..."
|
|
71
|
+
|
|
72
|
+
- id: enforce-commit-message
|
|
73
|
+
script: enforce-commit-message.sh
|
|
74
|
+
description: Enforces commit message contract โ title โค100 chars, body โค3 non-empty lines, no Claude/Anthropic/USER/Co-Authored-By attribution, no Persian prompt quotes.
|
|
75
|
+
category: enforcement
|
|
76
|
+
phase: G
|
|
77
|
+
timeout: 5
|
|
78
|
+
events:
|
|
79
|
+
- event: PreToolUse
|
|
80
|
+
matcher: Bash
|
|
81
|
+
status_message: "๐ Validating commit message contract..."
|
|
82
|
+
|
|
83
|
+
- id: inject-mcp-caller-session
|
|
84
|
+
script: inject-mcp-caller-session.sh
|
|
85
|
+
description: Injects the calling panel's coding-os session as `agent_session` into MCP task-tool args so the panel-blind MCP server attributes writes to the real caller, not the last-writer-wins .active-session pointer. Fail-open; completes F2.
|
|
86
|
+
category: task
|
|
87
|
+
phase: "0"
|
|
88
|
+
timeout: 5
|
|
89
|
+
events:
|
|
90
|
+
- event: PreToolUse
|
|
91
|
+
matcher: mcp__coding-os__cos_task_move
|
|
92
|
+
status_message: "๐ชช Attributing task move to this panel..."
|
|
93
|
+
- event: PreToolUse
|
|
94
|
+
matcher: mcp__coding-os__cos_task_create
|
|
95
|
+
status_message: "๐ชช Attributing task create to this panel..."
|
|
96
|
+
- event: PreToolUse
|
|
97
|
+
matcher: mcp__coding-os__cos_work_log_append
|
|
98
|
+
status_message: "๐ชช Attributing work-log to this panel..."
|
|
99
|
+
|
|
100
|
+
- id: block-uv-heredoc
|
|
101
|
+
script: block-uv-heredoc.sh
|
|
102
|
+
description: Blocks `uv run ... <<EOF` pattern (Rule #9 โ silently hangs).
|
|
103
|
+
category: safety
|
|
104
|
+
phase: E
|
|
105
|
+
timeout: 5
|
|
106
|
+
events:
|
|
107
|
+
- event: PreToolUse
|
|
108
|
+
matcher: Bash
|
|
109
|
+
status_message: "โ ๏ธ Inspecting uv-run heredoc pattern (rule #9)..."
|
|
110
|
+
|
|
111
|
+
- id: block-bad-patterns
|
|
112
|
+
script: block-bad-patterns.sh
|
|
113
|
+
description: "Rejects bare `except: pass`, mock-where-real-needed, and other anti-patterns."
|
|
114
|
+
category: safety
|
|
115
|
+
phase: "0"
|
|
116
|
+
timeout: 5
|
|
117
|
+
events:
|
|
118
|
+
- event: PreToolUse
|
|
119
|
+
matcher: Write|Edit
|
|
120
|
+
status_message: "๐ซ Checking for anti-patterns (bare except: pass, โฆ)..."
|
|
121
|
+
|
|
122
|
+
- id: block-protected-files
|
|
123
|
+
script: block-protected-files.sh
|
|
124
|
+
description: Blocks edits to governance-protected files unless the active task is a governance task.
|
|
125
|
+
category: safety
|
|
126
|
+
phase: "0"
|
|
127
|
+
timeout: 5
|
|
128
|
+
events:
|
|
129
|
+
- event: PreToolUse
|
|
130
|
+
matcher: Write|Edit
|
|
131
|
+
status_message: "๐ Checking protected governance files..."
|
|
132
|
+
|
|
133
|
+
- id: block-shared-tree-edit
|
|
134
|
+
script: block-shared-tree-edit.sh
|
|
135
|
+
description: "pr-mode only โ blocks Write/Edit/MultiEdit on the shared integration checkout so every change is isolated in a worktree. Inert in trunk mode."
|
|
136
|
+
category: safety
|
|
137
|
+
phase: "0"
|
|
138
|
+
timeout: 5
|
|
139
|
+
events:
|
|
140
|
+
- event: PreToolUse
|
|
141
|
+
matcher: Write|Edit|MultiEdit
|
|
142
|
+
status_message: "๐ณ pr-mode: enforcing worktree edit isolation..."
|
|
143
|
+
|
|
144
|
+
- id: enforce-task-transition
|
|
145
|
+
script: enforce-task-transition.sh
|
|
146
|
+
description: |
|
|
147
|
+
Blocks hand-edits that mutate a task STATUS transition
|
|
148
|
+
(status: / **Status:** / checkbox [ ]->[x]) on docs/tasks/**/*.md.
|
|
149
|
+
Status changes must route through cos_task_move / cos task-done so the
|
|
150
|
+
board DB, WIP caps, and DoD gates stay consistent; a raw Edit bypasses
|
|
151
|
+
them. Allow-list: governance/docs-update/template-update active task,
|
|
152
|
+
or COS_ALLOW_TASK_EDIT=1.
|
|
153
|
+
category: safety
|
|
154
|
+
phase: "0"
|
|
155
|
+
timeout: 5
|
|
156
|
+
events:
|
|
157
|
+
- event: PreToolUse
|
|
158
|
+
matcher: Write|Edit
|
|
159
|
+
status_message: "๐ฆ Checking task status transition..."
|
|
160
|
+
|
|
161
|
+
- id: block-migration-conflict
|
|
162
|
+
script: block-migration-conflict.sh
|
|
163
|
+
description: Detects duplicate migration version numbers in db.py (Rule #10 โ append-only migrations).
|
|
164
|
+
category: safety
|
|
165
|
+
phase: E
|
|
166
|
+
timeout: 5
|
|
167
|
+
events:
|
|
168
|
+
- event: PreToolUse
|
|
169
|
+
matcher: Write|Edit
|
|
170
|
+
status_message: "๐๏ธ Checking migration version conflicts (rule #10)..."
|
|
171
|
+
|
|
172
|
+
- id: block-hardcoded-literals
|
|
173
|
+
script: block-hardcoded-literals.sh
|
|
174
|
+
description: Rejects hardcoded stack/adapter name literals in cli/*.py (Rule #12 โ data-driven CLI).
|
|
175
|
+
category: safety
|
|
176
|
+
phase: E
|
|
177
|
+
timeout: 5
|
|
178
|
+
events:
|
|
179
|
+
- event: PreToolUse
|
|
180
|
+
matcher: Write|Edit
|
|
181
|
+
status_message: "๐ฏ Scanning cli/*.py for hardcoded literals (rule #12)..."
|
|
182
|
+
|
|
183
|
+
# โโ enforcement โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
184
|
+
- id: enforce-verify
|
|
185
|
+
script: enforce-verify.sh
|
|
186
|
+
description: Blocks `task-done` commands unless the required verification suite has recorded a recent pass.
|
|
187
|
+
category: enforcement
|
|
188
|
+
phase: "0"
|
|
189
|
+
timeout: 10
|
|
190
|
+
events:
|
|
191
|
+
- event: PreToolUse
|
|
192
|
+
matcher: Bash
|
|
193
|
+
status_message: "โ
Verifying suites before task-done..."
|
|
194
|
+
|
|
195
|
+
- id: test-governor
|
|
196
|
+
script: test-governor.sh
|
|
197
|
+
description: PreToolUse Bash โ governs pytest invocations for multi-agent laptop safety (TASK-330). BLOCKs full sweeps without audited override (Rule 20), BLOCKs re-runs of a suite already green on the same tree (commit-keyed ledger, COS_TEST_FORCE=1 re-runs), and BLOCKs concurrent heavy runs via a TTL+liveness lockfile. Sweep gate fail-closed; rest fail-open. Spec at docs/engineering/test-governance.md.
|
|
198
|
+
category: enforcement
|
|
199
|
+
phase: "0"
|
|
200
|
+
timeout: 15
|
|
201
|
+
events:
|
|
202
|
+
- event: PreToolUse
|
|
203
|
+
matcher: Bash
|
|
204
|
+
status_message: "๐งช Test-governor: dedup/lock/sweep check..."
|
|
205
|
+
|
|
206
|
+
- id: record-verify-auto
|
|
207
|
+
script: record-verify-auto.sh
|
|
208
|
+
description: PostToolUse Bash โ auto-records completed verify-suite commands (data-driven match against verify-suites.yaml) as PASS/FAIL with commit keys into .last-verify.json, and clears the test-run lockfile (TASK-329). Also fires on PostToolUseFailure so a failed suite records FAIL and frees the lock immediately (TASK-335). Fail-open, always exit 0.
|
|
209
|
+
category: observability
|
|
210
|
+
phase: O
|
|
211
|
+
timeout: 15
|
|
212
|
+
events:
|
|
213
|
+
- event: PostToolUse
|
|
214
|
+
matcher: Bash
|
|
215
|
+
status_message: "๐งพ Recording verify-suite result..."
|
|
216
|
+
- event: PostToolUseFailure
|
|
217
|
+
matcher: ""
|
|
218
|
+
status_message: "๐งพ Recording failed suite result..."
|
|
219
|
+
|
|
220
|
+
- id: enforce-template
|
|
221
|
+
script: enforce-template.sh
|
|
222
|
+
description: Requires structured task / ADR / PRD / insight documents to follow the template.
|
|
223
|
+
category: enforcement
|
|
224
|
+
phase: "0"
|
|
225
|
+
timeout: 5
|
|
226
|
+
events:
|
|
227
|
+
- event: PreToolUse
|
|
228
|
+
matcher: Write|Edit
|
|
229
|
+
status_message: "๐ Checking doc templates (task / ADR / PRD / insight)..."
|
|
230
|
+
|
|
231
|
+
- id: thinking_os-gate
|
|
232
|
+
script: thinking_os-gate.sh
|
|
233
|
+
description: Requires a recorded Complexity Gate classification before code writes.
|
|
234
|
+
category: enforcement
|
|
235
|
+
phase: "0"
|
|
236
|
+
timeout: 5
|
|
237
|
+
events:
|
|
238
|
+
- event: PreToolUse
|
|
239
|
+
matcher: Write|Edit
|
|
240
|
+
status_message: "๐ง Verifying Complexity Gate recorded..."
|
|
241
|
+
|
|
242
|
+
- id: enforce-scaffold-boundary
|
|
243
|
+
script: enforce-scaffold-boundary.sh
|
|
244
|
+
description: TASK-163 โ block Write/Edit when target path violates an installed stack's `forbids_writing_in`. Reads aggregated $COS_STATE_DIR/scaffold-boundary.yaml; fail-open when missing.
|
|
245
|
+
category: enforcement
|
|
246
|
+
phase: O
|
|
247
|
+
timeout: 10
|
|
248
|
+
events:
|
|
249
|
+
- event: PreToolUse
|
|
250
|
+
matcher: Write|Edit
|
|
251
|
+
status_message: "๐ง Checking scaffold-boundary (multi-stack subtree isolation)..."
|
|
252
|
+
|
|
253
|
+
- id: enforce-task-start
|
|
254
|
+
script: enforce-task-start.sh
|
|
255
|
+
description: Requires an active task marker so every edit is traceable.
|
|
256
|
+
category: enforcement
|
|
257
|
+
phase: "0"
|
|
258
|
+
timeout: 5
|
|
259
|
+
events:
|
|
260
|
+
- event: PreToolUse
|
|
261
|
+
matcher: Write|Edit
|
|
262
|
+
status_message: "๐ Verifying active task..."
|
|
263
|
+
|
|
264
|
+
- id: enforce-doc-anchor
|
|
265
|
+
script: enforce-doc-anchor.sh
|
|
266
|
+
description: Blocks code writes without a recorded doc anchor (Rule #0 โ docs-first principle).
|
|
267
|
+
category: enforcement
|
|
268
|
+
phase: E
|
|
269
|
+
timeout: 5
|
|
270
|
+
events:
|
|
271
|
+
- event: PreToolUse
|
|
272
|
+
matcher: Write|Edit
|
|
273
|
+
status_message: "๐ Verifying doc anchor (docs-first principle)..."
|
|
274
|
+
|
|
275
|
+
- id: enforce-memory-check
|
|
276
|
+
script: enforce-memory-check.sh
|
|
277
|
+
description: Requires a cos_search memory check before code writes on COMPLICATED/COMPLEX tasks.
|
|
278
|
+
category: enforcement
|
|
279
|
+
phase: F
|
|
280
|
+
timeout: 5
|
|
281
|
+
events:
|
|
282
|
+
- event: PreToolUse
|
|
283
|
+
matcher: Write|Edit
|
|
284
|
+
status_message: "๐ Verifying Memory Check (cos_search) recorded..."
|
|
285
|
+
|
|
286
|
+
- id: enforce-skill
|
|
287
|
+
script: enforce-skill.sh
|
|
288
|
+
description: Requires a domain skill to be invoked before editing stack-scoped code files.
|
|
289
|
+
category: enforcement
|
|
290
|
+
phase: "0"
|
|
291
|
+
timeout: 5
|
|
292
|
+
events:
|
|
293
|
+
- event: PreToolUse
|
|
294
|
+
matcher: Write|Edit
|
|
295
|
+
status_message: "๐ ๏ธ Verifying domain skill invoked..."
|
|
296
|
+
|
|
297
|
+
- id: enforce-zoom
|
|
298
|
+
script: enforce-zoom.sh
|
|
299
|
+
description: Requires a Plan checkpoint for COMPLICATED/COMPLEX tasks before code writes.
|
|
300
|
+
category: enforcement
|
|
301
|
+
phase: "0"
|
|
302
|
+
timeout: 5
|
|
303
|
+
events:
|
|
304
|
+
- event: PreToolUse
|
|
305
|
+
matcher: Write|Edit
|
|
306
|
+
status_message: "๐ Verifying Plan checkpoint for COMPLICATED+..."
|
|
307
|
+
|
|
308
|
+
- id: enforce-doc-sync
|
|
309
|
+
script: enforce-doc-sync.sh
|
|
310
|
+
description: |
|
|
311
|
+
PostToolUse Write|Edit|MultiEdit โ code โ doc staleness scanner.
|
|
312
|
+
Closes the docs-first loop in the OTHER direction. Three signals:
|
|
313
|
+
(1) public symbol removed/renamed + doc still mentions it,
|
|
314
|
+
(2) signature changed (param count diff) on a kept symbol โ catches
|
|
315
|
+
the "agent invented a non-spec'd field" case, (3) doc mtime older
|
|
316
|
+
than code AND mentions a current symbol (soft).
|
|
317
|
+
Collaborates with thinking_os FTS5 doc index (better than path-mirror
|
|
318
|
+
heuristic) + graph_os reference count when backend is up. WARN class,
|
|
319
|
+
never blocks. Helper: _helpers/doc_sync_check.py.
|
|
320
|
+
category: enforcement
|
|
321
|
+
phase: "0"
|
|
322
|
+
timeout: 30
|
|
323
|
+
events:
|
|
324
|
+
- event: PostToolUse
|
|
325
|
+
matcher: Write|Edit|MultiEdit
|
|
326
|
+
status_message: "๐ Scanning related docs for drift..."
|
|
327
|
+
|
|
328
|
+
# โโ observability โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
329
|
+
- id: capture-observation
|
|
330
|
+
script: capture-observation.sh
|
|
331
|
+
description: Fire-and-forget observation recording to thinking_os memory (PostToolUse Write|Edit|MultiEdit).
|
|
332
|
+
category: observability
|
|
333
|
+
phase: "0"
|
|
334
|
+
timeout: 10
|
|
335
|
+
events:
|
|
336
|
+
- event: PostToolUse
|
|
337
|
+
matcher: Write|Edit|MultiEdit
|
|
338
|
+
status_message: "๐ง Recording observation + embedding to memory..."
|
|
339
|
+
|
|
340
|
+
- id: auto-reindex-docs
|
|
341
|
+
script: auto-reindex-docs.sh
|
|
342
|
+
description: Incremental re-index of docs (md) AND code / config (.py/.ts/.tsx/.sh/.yaml/.go) on Write/Edit. Dispatches to the matching graph_os extractor; fire-and-forget.
|
|
343
|
+
category: retrieval
|
|
344
|
+
phase: H
|
|
345
|
+
timeout: 30
|
|
346
|
+
events:
|
|
347
|
+
- event: PostToolUse
|
|
348
|
+
matcher: Write|Edit
|
|
349
|
+
status_message: "โป๏ธ Re-indexing doc/code for cos_doc_search + graph_os freshness..."
|
|
350
|
+
|
|
351
|
+
- id: nudge-reuse-first
|
|
352
|
+
script: nudge-reuse-first.sh
|
|
353
|
+
description: After a Write/Edit under src/services/, nudge (non-blocking, debounced) to promote a symbol duplicated across same-language services into src/shared/<lang>/ โ reuse-first placement (project-anatomy.md). Fail-open.
|
|
354
|
+
category: reminder
|
|
355
|
+
phase: H
|
|
356
|
+
timeout: 10
|
|
357
|
+
events:
|
|
358
|
+
- event: PostToolUse
|
|
359
|
+
matcher: Write|Edit
|
|
360
|
+
status_message: "โป๏ธ Checking cross-service reuse (src/shared/ nudge)..."
|
|
361
|
+
|
|
362
|
+
- id: auto-graph-reconcile-shell
|
|
363
|
+
script: auto-graph-reconcile-shell.sh
|
|
364
|
+
description: PostToolUse Bash โ single ordered reconciler (replaces auto-reindex-shell-ops + auto-prune-deleted-files). On rm/mv/cp/git/find of a tracked file it walks the touched paths once and prunes-if-gone THEN reindexes-if-present in one job, eliminating the N10 race where the two old hooks hit the graph DB in parallel; bulk ops schedule one debounced full reindex.
|
|
365
|
+
category: retrieval
|
|
366
|
+
phase: O
|
|
367
|
+
timeout: 10
|
|
368
|
+
events:
|
|
369
|
+
- event: PostToolUse
|
|
370
|
+
matcher: Bash
|
|
371
|
+
status_message: "๐ Reconciling graph for shell file op (prune + reindex)..."
|
|
372
|
+
|
|
373
|
+
- id: auto-regen-doc-index
|
|
374
|
+
script: auto-regen-doc-index.sh
|
|
375
|
+
description: TASK-161 freshness โ regenerate the affected docs/<dir>/00-index.md from frontmatter on every Write/Edit of a docs/**/*.md file. Debounced (5s/dir), fire-and-forget; failures land in $COS_STATE_DIR/.regen-doc-index-errors.log.
|
|
376
|
+
category: retrieval
|
|
377
|
+
phase: O
|
|
378
|
+
timeout: 10
|
|
379
|
+
events:
|
|
380
|
+
- event: PostToolUse
|
|
381
|
+
matcher: Write|Edit
|
|
382
|
+
status_message: "๐ Regenerating affected docs/<dir>/00-index.md from frontmatter..."
|
|
383
|
+
|
|
384
|
+
# โโ graph_os enforcement โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
385
|
+
- id: enforce-graph-first-read
|
|
386
|
+
script: enforce-graph-first-read.sh
|
|
387
|
+
description: |
|
|
388
|
+
PreToolUse Read on a load-bearing meta-repo file
|
|
389
|
+
WARNS (or BLOCKS in strict) when the agent reaches for Read before
|
|
390
|
+
any cos_graph_* tool has been called this session. Reuses the same
|
|
391
|
+
enforce_context_on glob list from .coding-os/rag-config.yaml. Silent
|
|
392
|
+
if the per-file .graph-context-<sha> marker exists. Toggle via
|
|
393
|
+
COS_ENFORCE_GRAPH_FIRST=off|1|strict.
|
|
394
|
+
category: enforcement
|
|
395
|
+
phase: I
|
|
396
|
+
timeout: 10
|
|
397
|
+
events:
|
|
398
|
+
- event: PreToolUse
|
|
399
|
+
matcher: Read
|
|
400
|
+
status_message: "๐งญ Checking graph-first discipline before Read..."
|
|
401
|
+
|
|
402
|
+
- id: enforce-graph-context
|
|
403
|
+
script: enforce-graph-context.sh
|
|
404
|
+
description: Warn (strict-mode = block) before editing a load-bearing file listed under `.coding-os/rag-config.yaml::graph.enforce_context_on` without a prior cos_graph_context consultation marker.
|
|
405
|
+
category: enforcement
|
|
406
|
+
phase: I
|
|
407
|
+
timeout: 10
|
|
408
|
+
events:
|
|
409
|
+
- event: PreToolUse
|
|
410
|
+
matcher: Write|Edit
|
|
411
|
+
status_message: "๐งญ Verifying graph-context marker for load-bearing file..."
|
|
412
|
+
|
|
413
|
+
- id: warn-destructive-edit
|
|
414
|
+
script: warn-destructive-edit.sh
|
|
415
|
+
description: Warn (strict-mode = block) before a large net-deletion/overwrite of a load-bearing file (docs/** + graph.enforce_context_on globs); surfaces the last commit + git pull command. Fail-open, self-throttling. Spec docs/engineering/destructive-edit-guard.md.
|
|
416
|
+
category: enforcement
|
|
417
|
+
phase: I
|
|
418
|
+
timeout: 10
|
|
419
|
+
events:
|
|
420
|
+
- event: PreToolUse
|
|
421
|
+
matcher: Write|Edit|MultiEdit
|
|
422
|
+
status_message: "๐ก๏ธ Checking for destructive deletion of load-bearing content..."
|
|
423
|
+
|
|
424
|
+
- id: warn-diff-size
|
|
425
|
+
script: warn-diff-size.sh
|
|
426
|
+
description: PreToolUse Bash โ when a `git commit` is about to run, warn (never block) if the staged diff exceeds COS_DIFF_SIZE_THRESHOLD lines (default 400), nudging diff-minimal commits. Fail-open.
|
|
427
|
+
category: enforcement
|
|
428
|
+
phase: "0"
|
|
429
|
+
timeout: 10
|
|
430
|
+
events:
|
|
431
|
+
- event: PreToolUse
|
|
432
|
+
matcher: Bash
|
|
433
|
+
status_message: "๐ Checking staged diff size..."
|
|
434
|
+
|
|
435
|
+
- id: enforce-rename-plan
|
|
436
|
+
script: enforce-rename-plan.sh
|
|
437
|
+
description: Warn (strict-mode = block) when an Edit performs an identifier-rename-shaped string swap without a prior cos_graph_rename_plan marker in this session.
|
|
438
|
+
category: enforcement
|
|
439
|
+
phase: I
|
|
440
|
+
timeout: 10
|
|
441
|
+
events:
|
|
442
|
+
- event: PreToolUse
|
|
443
|
+
matcher: Edit
|
|
444
|
+
status_message: "โ๏ธ Verifying rename-plan marker..."
|
|
445
|
+
|
|
446
|
+
- id: verify-rename-callers
|
|
447
|
+
script: verify-rename-callers.sh
|
|
448
|
+
description: PostToolUse Edit โ when an Edit looks like an identifier rename, greps the repo for unreplaced callers and warns. Closes the gap left by enforce-rename-plan (which verifies plan-existence, not site-completeness). Always non-blocking.
|
|
449
|
+
category: enforcement
|
|
450
|
+
phase: O
|
|
451
|
+
timeout: 30
|
|
452
|
+
events:
|
|
453
|
+
- event: PostToolUse
|
|
454
|
+
matcher: Edit
|
|
455
|
+
status_message: "๐ Checking for unreplaced rename callers..."
|
|
456
|
+
|
|
457
|
+
- id: search-enforce-inventory
|
|
458
|
+
script: search-enforce-inventory.sh
|
|
459
|
+
description: PreToolUse Bash โ when a bulk replace (sed -i, xargs sed, python replace) is about to run, extracts the OLD pattern, stores it in session state, and emits the inventory grep command for the agent to run. Does NOT run grep itself (full-repo grep exceeds PreToolUse timeout on large codebases). Companion PostToolUse hook (search-verify-remaining) runs bounded verify grep after replace. Always non-blocking.
|
|
460
|
+
category: enforcement
|
|
461
|
+
phase: O
|
|
462
|
+
timeout: 30
|
|
463
|
+
events:
|
|
464
|
+
- event: PreToolUse
|
|
465
|
+
matcher: Bash
|
|
466
|
+
status_message: "๐ Running search inventory before bulk replace..."
|
|
467
|
+
|
|
468
|
+
- id: search-verify-remaining
|
|
469
|
+
script: search-verify-remaining.sh
|
|
470
|
+
description: PostToolUse Bash โ after a bulk replace, reads session state from search-enforce-inventory and re-runs verify grep. Reports remaining match count vs ground truth. Warns if > 0 remain with file list. Closes the "declared done but 20 remain" gap for Bash-based replace operations. Always non-blocking.
|
|
471
|
+
category: enforcement
|
|
472
|
+
phase: O
|
|
473
|
+
timeout: 30
|
|
474
|
+
events:
|
|
475
|
+
- event: PostToolUse
|
|
476
|
+
matcher: Bash
|
|
477
|
+
status_message: "โ
Verifying 0 matches remain after replace..."
|
|
478
|
+
|
|
479
|
+
# โโ board_os Scrumban โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
480
|
+
- id: validate-task-frontmatter
|
|
481
|
+
script: validate-task-frontmatter.sh
|
|
482
|
+
description: Validates lean frontmatter (swimlane/kind/epic/labels/status/priority/appetite) on task MD writes. Blocks malformed YAML or enum violations.
|
|
483
|
+
category: safety
|
|
484
|
+
phase: L
|
|
485
|
+
timeout: 30
|
|
486
|
+
events:
|
|
487
|
+
- event: PreToolUse
|
|
488
|
+
matcher: Write|Edit
|
|
489
|
+
status_message: "๐งพ Validating task frontmatter..."
|
|
490
|
+
|
|
491
|
+
- id: enforce-wip-limit
|
|
492
|
+
script: enforce-wip-limit.sh
|
|
493
|
+
description: Enforces WIP caps from scrumban-config.yaml when a task transitions to in_progress/emergency. Bypass via COS_WIP_OVERRIDE=1.
|
|
494
|
+
category: safety
|
|
495
|
+
phase: L
|
|
496
|
+
timeout: 30
|
|
497
|
+
events:
|
|
498
|
+
- event: PreToolUse
|
|
499
|
+
matcher: Write|Edit
|
|
500
|
+
status_message: "๐ฆ Checking WIP limit before status change..."
|
|
501
|
+
|
|
502
|
+
- id: capture-work-log
|
|
503
|
+
script: capture-work-log.sh
|
|
504
|
+
description: Appends one-line Work Log entry to the active task on code Write/Edit. Fire-and-forget; flock-serialized for multi-agent safety.
|
|
505
|
+
category: observability
|
|
506
|
+
phase: L
|
|
507
|
+
timeout: 10
|
|
508
|
+
events:
|
|
509
|
+
- event: PostToolUse
|
|
510
|
+
matcher: Write|Edit|MultiEdit
|
|
511
|
+
status_message: "๐ Appending Work Log entry..."
|
|
512
|
+
|
|
513
|
+
- id: link-commit-to-task
|
|
514
|
+
script: link-commit-to-task.sh
|
|
515
|
+
description: After a real `git commit`, appends the new HEAD sha + subject to the active task's Work Log so cos_task_history links the code commits, not just commits that touched the task .md. Dedup by sha; fire-and-forget.
|
|
516
|
+
category: observability
|
|
517
|
+
phase: L
|
|
518
|
+
timeout: 10
|
|
519
|
+
events:
|
|
520
|
+
- event: PostToolUse
|
|
521
|
+
matcher: Bash
|
|
522
|
+
status_message: "๐ Linking commit to task..."
|
|
523
|
+
|
|
524
|
+
- id: auto-task-sync
|
|
525
|
+
script: auto-task-sync.sh
|
|
526
|
+
description: Re-syncs single task file into DB cache on Write/Edit. Fire-and-forget; keeps the board fresh within one hook latency.
|
|
527
|
+
category: retrieval
|
|
528
|
+
phase: L
|
|
529
|
+
timeout: 10
|
|
530
|
+
events:
|
|
531
|
+
- event: PostToolUse
|
|
532
|
+
matcher: Write|Edit
|
|
533
|
+
status_message: "โป๏ธ Re-syncing task to DB..."
|
|
534
|
+
|
|
535
|
+
- id: sync-task-current
|
|
536
|
+
script: sync-task-current.sh
|
|
537
|
+
description: |
|
|
538
|
+
PostToolUse fan-out โ auto-writes the per-panel .task-current marker
|
|
539
|
+
when a task transitions to in_progress via cos_task_move (MCP) or
|
|
540
|
+
`cos task-start` / `cos task-move --to in_progress` (Bash). Panel-env
|
|
541
|
+
reliable (a hook runs in the session lineage; the MCP server / cos CLI
|
|
542
|
+
subprocess resolve a stale panel). Removes the manual `write-state.sh
|
|
543
|
+
.task-current` step (TASK-059). Fire-and-forget; always exits 0.
|
|
544
|
+
category: task
|
|
545
|
+
phase: L
|
|
546
|
+
timeout: 10
|
|
547
|
+
events:
|
|
548
|
+
- event: PostToolUse
|
|
549
|
+
matcher: mcp__coding-os__cos_task_move
|
|
550
|
+
status_message: "๐ Syncing .task-current..."
|
|
551
|
+
- event: PostToolUse
|
|
552
|
+
matcher: Bash
|
|
553
|
+
status_message: "๐ Syncing .task-current..."
|
|
554
|
+
|
|
555
|
+
- id: advance-role
|
|
556
|
+
script: advance-role.sh
|
|
557
|
+
description: |
|
|
558
|
+
PostToolUse โ advances the active role (.role) along the composed chain
|
|
559
|
+
by work phase: Write/Edit/MultiEdit โ implementer/refactorer/debugger,
|
|
560
|
+
test/verify Bash โ reviewer. Only ever selects a role already IN the
|
|
561
|
+
chain (never invents one). Makes the banner roles= field track what the
|
|
562
|
+
agent is DOING rather than a frozen chain lead (TASK-057 F2.3). Fail-open.
|
|
563
|
+
category: cognition
|
|
564
|
+
phase: L
|
|
565
|
+
timeout: 10
|
|
566
|
+
events:
|
|
567
|
+
- event: PostToolUse
|
|
568
|
+
matcher: Write|Edit|MultiEdit
|
|
569
|
+
- event: PostToolUse
|
|
570
|
+
matcher: Bash
|
|
571
|
+
|
|
572
|
+
- id: check-mcp-extras
|
|
573
|
+
script: check-mcp-extras.sh
|
|
574
|
+
description: SessionStart โ verifies global cos binary has required Python extras (graph_os, board_os, rag). If missing, MCP crashes silently and all cos_* tools fail. Emits loud warning with exact fix command before agent uses any MCP tools. Fast (<200ms, no server start). Always non-blocking.
|
|
575
|
+
category: safety
|
|
576
|
+
phase: "0"
|
|
577
|
+
timeout: 30
|
|
578
|
+
events:
|
|
579
|
+
- event: SessionStart
|
|
580
|
+
matcher: startup
|
|
581
|
+
status_message: "๐ Checking MCP extras health..."
|
|
582
|
+
|
|
583
|
+
- id: remind-daily
|
|
584
|
+
script: remind-daily.sh
|
|
585
|
+
description: On SessionStart, nags if `cos daily` hasn't run in >24h. Non-blocking banner; ADHD-friendly (no shame).
|
|
586
|
+
category: observability
|
|
587
|
+
phase: L
|
|
588
|
+
timeout: 10
|
|
589
|
+
events:
|
|
590
|
+
- event: SessionStart
|
|
591
|
+
matcher: startup
|
|
592
|
+
status_message: "๐๏ธ Checking daily check-in recency..."
|
|
593
|
+
- event: SessionStart
|
|
594
|
+
matcher: resume
|
|
595
|
+
status_message: "๐๏ธ Checking daily check-in recency..."
|
|
596
|
+
|
|
597
|
+
- id: ensure-hub-up
|
|
598
|
+
script: ensure-hub-up.sh
|
|
599
|
+
description: SessionStart โ if .coding-os.yaml has hub.enabled (default true), probe http://127.0.0.1:9188 and start `cos hub` in the background when down.
|
|
600
|
+
category: observability
|
|
601
|
+
phase: "0"
|
|
602
|
+
timeout: 30
|
|
603
|
+
events:
|
|
604
|
+
- event: SessionStart
|
|
605
|
+
matcher: startup
|
|
606
|
+
status_message: "๐ฐ๏ธ Ensuring Coding OS Hub is up..."
|
|
607
|
+
|
|
608
|
+
- id: lint-task
|
|
609
|
+
script: lint-task.sh
|
|
610
|
+
description: Rule 15 enforcement. Warns task files >1.5k tokens, blocks >3k.
|
|
611
|
+
category: safety
|
|
612
|
+
phase: L
|
|
613
|
+
timeout: 10
|
|
614
|
+
events:
|
|
615
|
+
- event: PostToolUse
|
|
616
|
+
matcher: Write|Edit
|
|
617
|
+
status_message: "๐ Lint task (Rule 15)..."
|
|
618
|
+
|
|
619
|
+
- id: check-doc-size
|
|
620
|
+
script: check-doc-size.sh
|
|
621
|
+
description: Soft size budget per `layer:` (index/playbook/spec/policy/reference/adr/task). Warn-only โ complements lint-task with non-task layers.
|
|
622
|
+
category: reminder
|
|
623
|
+
phase: O
|
|
624
|
+
timeout: 5
|
|
625
|
+
events:
|
|
626
|
+
- event: PostToolUse
|
|
627
|
+
matcher: Write|Edit
|
|
628
|
+
status_message: "๐ Checking doc size budget..."
|
|
629
|
+
|
|
630
|
+
- id: enforce-task-body
|
|
631
|
+
script: enforce-task-body.sh
|
|
632
|
+
description: DoR/DoD validator. Blocks transitions to in_progress/complete when task body fails the kind's rules. SSOT in src/core/board_os/transition-gates.yaml.
|
|
633
|
+
category: enforcement
|
|
634
|
+
phase: L
|
|
635
|
+
timeout: 30
|
|
636
|
+
events:
|
|
637
|
+
- event: PreToolUse
|
|
638
|
+
matcher: Write|Edit
|
|
639
|
+
status_message: "๐ฆ Validating transition gates (DoR/DoD)..."
|
|
640
|
+
|
|
641
|
+
- id: track-skill
|
|
642
|
+
script: track-skill.sh
|
|
643
|
+
description: Tracks which skills have been invoked this session.
|
|
644
|
+
category: observability
|
|
645
|
+
phase: "0"
|
|
646
|
+
timeout: 5
|
|
647
|
+
events:
|
|
648
|
+
- event: PostToolUse
|
|
649
|
+
matcher: Skill
|
|
650
|
+
status_message: "๐ ๏ธ Tracking skill invocation..."
|
|
651
|
+
|
|
652
|
+
- id: pr-reap
|
|
653
|
+
script: pr-reap.sh
|
|
654
|
+
description: "pr-mode only โ SessionStart orphan reaper: GC worktrees/branches/PRs of presence-offline sessions; drain the cleanup ledger. Inert in trunk."
|
|
655
|
+
category: safety
|
|
656
|
+
phase: "0"
|
|
657
|
+
timeout: 10
|
|
658
|
+
events:
|
|
659
|
+
- event: SessionStart
|
|
660
|
+
matcher: startup|resume
|
|
661
|
+
status_message: "๐ณ pr-mode: reaping orphaned worktrees..."
|
|
662
|
+
|
|
663
|
+
- id: session-context
|
|
664
|
+
script: session-context.sh
|
|
665
|
+
description: Loads session context + memory digest on session start / compact / resume.
|
|
666
|
+
category: observability
|
|
667
|
+
phase: "0"
|
|
668
|
+
timeout: 30
|
|
669
|
+
events:
|
|
670
|
+
- event: SessionStart
|
|
671
|
+
matcher: startup
|
|
672
|
+
status_message: "๐ Loading session context + memory digest..."
|
|
673
|
+
- event: SessionStart
|
|
674
|
+
matcher: compact|resume
|
|
675
|
+
status_message: "๐ Recovering workflow context + memory digest..."
|
|
676
|
+
- event: UserPromptSubmit
|
|
677
|
+
matcher: ""
|
|
678
|
+
status_message: "๐ Checking workflow state..."
|
|
679
|
+
|
|
680
|
+
- id: session-end
|
|
681
|
+
script: session-end.sh
|
|
682
|
+
description: |
|
|
683
|
+
Stop hook โ fires at end-of-turn (NOT end-of-conversation). Claude Code
|
|
684
|
+
emits `Stop` after each agent turn, so the same session_id persists
|
|
685
|
+
across many `session-end` invocations. The hook writes per-turn
|
|
686
|
+
summary + memory enrichment; idempotent UPSERT on session_summaries.
|
|
687
|
+
"session" in the hook name refers to the agent loop session-id, which
|
|
688
|
+
is rotated only on a fresh `SessionStart startup` (see
|
|
689
|
+
session-context.sh for rotation logic).
|
|
690
|
+
category: observability
|
|
691
|
+
phase: "0"
|
|
692
|
+
timeout: 30
|
|
693
|
+
events:
|
|
694
|
+
- event: Stop
|
|
695
|
+
matcher: ""
|
|
696
|
+
status_message: "๐ Writing turn summary + enrichment to memory..."
|
|
697
|
+
|
|
698
|
+
- id: warn-abandoned-task
|
|
699
|
+
script: warn-abandoned-task.sh
|
|
700
|
+
description: |
|
|
701
|
+
Stop hook โ warns once per session when a task this session moved
|
|
702
|
+
to in_progress is still in_progress at turn-end. Catches the
|
|
703
|
+
"agent started a task but never moved it to testing/complete"
|
|
704
|
+
abandonment pattern. Fail-open: nudges via Stop additionalContext,
|
|
705
|
+
never blocks. Debounced per session-id via .abandoned-task-warned.
|
|
706
|
+
category: observability
|
|
707
|
+
phase: "0"
|
|
708
|
+
timeout: 5
|
|
709
|
+
events:
|
|
710
|
+
- event: Stop
|
|
711
|
+
matcher: ""
|
|
712
|
+
status_message: "๐ฉน Checking for tasks left in_progress..."
|
|
713
|
+
|
|
714
|
+
- id: nudge-reentry
|
|
715
|
+
script: nudge-reentry.sh
|
|
716
|
+
description: |
|
|
717
|
+
UserPromptSubmit twin of warn-abandoned-task โ softly reminds once per
|
|
718
|
+
(session, open-set) when this session holds an in_progress task not bound
|
|
719
|
+
to .task-current. Closes the re-entry blind spot the Stop-time hook cannot
|
|
720
|
+
cover (a turn that never reached Stop, or .task-current drifting from the
|
|
721
|
+
DB โ common on Codex, whose MCP task-moves fire no .task-current sync).
|
|
722
|
+
Session-scoped, so a sibling session's WIP never false-triggers. Fail-open:
|
|
723
|
+
nudges via UserPromptSubmit additionalContext, never blocks. Debounced per
|
|
724
|
+
(session, in_progress-set) via .reentry-nudged.
|
|
725
|
+
category: observability
|
|
726
|
+
phase: O
|
|
727
|
+
timeout: 5
|
|
728
|
+
events:
|
|
729
|
+
- event: UserPromptSubmit
|
|
730
|
+
matcher: ""
|
|
731
|
+
|
|
732
|
+
- id: drain-embedding-outbox
|
|
733
|
+
script: drain-embedding-outbox.sh
|
|
734
|
+
description: |
|
|
735
|
+
Stop hook โ drains the embedding_outbox (Wave 4) off the interactive
|
|
736
|
+
path. The capture hot-path enqueues instead of embedding (so an Edit is
|
|
737
|
+
never blocked by a model load); this hook embeds the backlog at turn-end.
|
|
738
|
+
Fail-open, never blocks; the helper fast-paths out with zero model load
|
|
739
|
+
when the outbox is empty (the common case).
|
|
740
|
+
category: retrieval
|
|
741
|
+
phase: "0"
|
|
742
|
+
timeout: 60
|
|
743
|
+
events:
|
|
744
|
+
- event: Stop
|
|
745
|
+
matcher: ""
|
|
746
|
+
status_message: "๐งฎ Draining deferred embeddings..."
|
|
747
|
+
|
|
748
|
+
- id: agent-presence
|
|
749
|
+
script: agent-presence.sh
|
|
750
|
+
description: 'Live per-session presence file (.coding-os/<agent>/sessions/<sid>.json). Powers 3-state active/present/offline on the board โ uses PPID + PID liveness so "thinking" agents don''t appear offline between tool calls. Updated 2026-05-04 โ also fires on SubagentStart/SubagentStop/PostToolUseFailure so parent-session activity stays accurate while sub-agents work. Updated 2026-05-22 โ also fires on PostToolUse Bash so read-only sessions (verify/git/pytest, no Write/Edit) refresh last_tool_at and stay visible past the 300s TTL.'
|
|
751
|
+
category: observability
|
|
752
|
+
phase: "0"
|
|
753
|
+
timeout: 5
|
|
754
|
+
events:
|
|
755
|
+
- event: SessionStart
|
|
756
|
+
matcher: startup
|
|
757
|
+
- event: SessionStart
|
|
758
|
+
matcher: compact|resume
|
|
759
|
+
- event: UserPromptSubmit
|
|
760
|
+
matcher: ""
|
|
761
|
+
- event: PostToolUse
|
|
762
|
+
matcher: Write|Edit
|
|
763
|
+
- event: PostToolUse
|
|
764
|
+
matcher: Bash
|
|
765
|
+
- event: PostToolUseFailure
|
|
766
|
+
matcher: ""
|
|
767
|
+
- event: SubagentStart
|
|
768
|
+
matcher: ""
|
|
769
|
+
- event: SubagentStop
|
|
770
|
+
matcher: ""
|
|
771
|
+
- event: Stop
|
|
772
|
+
matcher: ""
|
|
773
|
+
- event: SessionEnd
|
|
774
|
+
matcher: ""
|
|
775
|
+
|
|
776
|
+
- id: warn-mcp-down
|
|
777
|
+
script: warn-mcp-down.sh
|
|
778
|
+
description: Probes thinking_os MCP liveness at session start; loud banner if unreachable. Capped at 2s probe (perl alarm 2 + 500ms slack).
|
|
779
|
+
category: observability
|
|
780
|
+
phase: F
|
|
781
|
+
timeout: 30
|
|
782
|
+
events:
|
|
783
|
+
- event: SessionStart
|
|
784
|
+
matcher: startup
|
|
785
|
+
status_message: "๐ฉบ Probing MCP coding-os liveness..."
|
|
786
|
+
- event: SessionStart
|
|
787
|
+
matcher: compact|resume
|
|
788
|
+
status_message: "๐ฉบ Probing MCP coding-os liveness..."
|
|
789
|
+
|
|
790
|
+
- id: auto-brain-decay
|
|
791
|
+
script: auto-brain-decay.sh
|
|
792
|
+
description: SessionStart runs Ebbinghaus confidence decay on learned_patterns once per 24 h. Fire-and-forget, bounded at 10s; debounces via $COS_STATE_DIR/.last-decay.
|
|
793
|
+
category: observability
|
|
794
|
+
phase: G
|
|
795
|
+
timeout: 30
|
|
796
|
+
events:
|
|
797
|
+
- event: SessionStart
|
|
798
|
+
matcher: startup
|
|
799
|
+
status_message: "๐ Debounced pattern-decay sweep..."
|
|
800
|
+
- event: SessionStart
|
|
801
|
+
matcher: compact|resume
|
|
802
|
+
status_message: "๐ Debounced pattern-decay sweep..."
|
|
803
|
+
|
|
804
|
+
- id: reclaim-sweep
|
|
805
|
+
script: reclaim-sweep.sh
|
|
806
|
+
description: SessionStart reclaims zombie in_progress/testing tasks of dead predecessor sessions (board_os.cos_task_reclaim). Consumer-robust recovery leg โ needs no SessionEnd event or cron. Fire-and-forget, detached, ~30m debounce via $COS_PANEL_DIR/.reclaim-sweep.
|
|
807
|
+
category: observability
|
|
808
|
+
phase: G
|
|
809
|
+
timeout: 15
|
|
810
|
+
events:
|
|
811
|
+
- event: SessionStart
|
|
812
|
+
matcher: startup
|
|
813
|
+
status_message: "โป๏ธ Reclaiming zombie tasks of dead sessions..."
|
|
814
|
+
- event: SessionStart
|
|
815
|
+
matcher: compact|resume
|
|
816
|
+
status_message: "โป๏ธ Reclaiming zombie tasks of dead sessions..."
|
|
817
|
+
|
|
818
|
+
- id: warn-graph-empty
|
|
819
|
+
script: warn-graph-empty.sh
|
|
820
|
+
description: SessionStart one-shot nudge when graph_os has no indexed nodes. Non-blocking; debounced per session; never auto-indexes.
|
|
821
|
+
category: observability
|
|
822
|
+
phase: I
|
|
823
|
+
timeout: 10
|
|
824
|
+
events:
|
|
825
|
+
- event: SessionStart
|
|
826
|
+
matcher: startup
|
|
827
|
+
status_message: "๐ธ๏ธ Checking graph_os index state..."
|
|
828
|
+
- event: SessionStart
|
|
829
|
+
matcher: compact|resume
|
|
830
|
+
status_message: "๐ธ๏ธ Checking graph_os index state..."
|
|
831
|
+
|
|
832
|
+
- id: check-capture-worked
|
|
833
|
+
script: check-capture-worked.sh
|
|
834
|
+
description: Session-end recap โ warns if zero observations captured despite code edits.
|
|
835
|
+
category: observability
|
|
836
|
+
phase: F
|
|
837
|
+
timeout: 10
|
|
838
|
+
events:
|
|
839
|
+
- event: Stop
|
|
840
|
+
matcher: ""
|
|
841
|
+
status_message: "๐ Session recap: verifying observations captured..."
|
|
842
|
+
|
|
843
|
+
# โโ reminder โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
844
|
+
- id: regen-reminder
|
|
845
|
+
script: regen-reminder.sh
|
|
846
|
+
description: Reminds to regenerate derived artifacts when their sources change.
|
|
847
|
+
category: reminder
|
|
848
|
+
phase: E
|
|
849
|
+
timeout: 5
|
|
850
|
+
events:
|
|
851
|
+
- event: PostToolUse
|
|
852
|
+
matcher: Write|Edit
|
|
853
|
+
status_message: "๐ Checking if derived artifacts need regeneration..."
|
|
854
|
+
|
|
855
|
+
- id: test-first-reminder
|
|
856
|
+
script: test-first-reminder.sh
|
|
857
|
+
description: Points at the companion test file after a code edit (or suggests one if absent).
|
|
858
|
+
category: reminder
|
|
859
|
+
phase: E
|
|
860
|
+
timeout: 5
|
|
861
|
+
events:
|
|
862
|
+
- event: PostToolUse
|
|
863
|
+
matcher: Write|Edit
|
|
864
|
+
status_message: "๐งช Checking for companion test file..."
|
|
865
|
+
|
|
866
|
+
- id: remind-learn-validate
|
|
867
|
+
script: remind-learn-validate.sh
|
|
868
|
+
description: Surfaces cos_learn_validate reminder after task-done so the agent feeds back.
|
|
869
|
+
category: reminder
|
|
870
|
+
phase: F
|
|
871
|
+
timeout: 5
|
|
872
|
+
events:
|
|
873
|
+
- event: PostToolUse
|
|
874
|
+
matcher: Bash
|
|
875
|
+
status_message: "๐ก Checking if learn-validate reminder is due..."
|
|
876
|
+
|
|
877
|
+
- id: nudge-learn-narrative
|
|
878
|
+
script: nudge-learn-narrative.sh
|
|
879
|
+
description: |
|
|
880
|
+
Stop hook โ when a session shows real learning signal (a file reworked
|
|
881
|
+
>=3x, or a backtrack), nudges the agent ONCE to record a structured lesson
|
|
882
|
+
via cos_learn_narrative (โ docs/insights + memory). Signal-gated (silent on
|
|
883
|
+
trivial sessions), debounced per session, warn-only, fail-open. The channel
|
|
884
|
+
for deep engineering lessons that friction/commit mining can't capture.
|
|
885
|
+
category: reminder
|
|
886
|
+
phase: "0"
|
|
887
|
+
timeout: 5
|
|
888
|
+
events:
|
|
889
|
+
- event: Stop
|
|
890
|
+
matcher: ""
|
|
891
|
+
status_message: "๐ง Checking if a lesson is worth recording..."
|
|
892
|
+
|
|
893
|
+
- id: jit-recall
|
|
894
|
+
script: jit-recall.sh
|
|
895
|
+
description: |
|
|
896
|
+
PreToolUse Write|Edit just-in-time recall โ surfaces a past friction
|
|
897
|
+
lesson about the file being edited plus any convention-rule one-liner
|
|
898
|
+
mapped to the path in jit-rules.tsv, at the moment it matters. Warn-only,
|
|
899
|
+
debounced per (file, session) / (rule, session).
|
|
900
|
+
category: reminder
|
|
901
|
+
phase: O
|
|
902
|
+
timeout: 5
|
|
903
|
+
events:
|
|
904
|
+
- event: PreToolUse
|
|
905
|
+
matcher: "Write|Edit"
|
|
906
|
+
status_message: "๐ง Checking for a past lesson on this file..."
|
|
907
|
+
|
|
908
|
+
# โโ meta (coding-os meta-project specific) โโโโโโโโโโโโโโโโ
|
|
909
|
+
- id: check-agents-md-size
|
|
910
|
+
script: check-agents-md-size.sh
|
|
911
|
+
description: Warns when AGENTS.md approaches Codex's 32 KiB read cap.
|
|
912
|
+
category: meta
|
|
913
|
+
phase: G
|
|
914
|
+
timeout: 5
|
|
915
|
+
events:
|
|
916
|
+
- event: PostToolUse
|
|
917
|
+
matcher: Write|Edit
|
|
918
|
+
status_message: "๐ Checking AGENTS.md size (Codex 32 KiB cap)..."
|
|
919
|
+
|
|
920
|
+
- id: check-agents-md-refs
|
|
921
|
+
script: check-agents-md-refs.sh
|
|
922
|
+
description: Flags AGENTS.md references to src/core/rules or src/core/skills that no longer exist.
|
|
923
|
+
category: meta
|
|
924
|
+
phase: G
|
|
925
|
+
timeout: 5
|
|
926
|
+
events:
|
|
927
|
+
- event: PostToolUse
|
|
928
|
+
matcher: Write|Edit
|
|
929
|
+
status_message: "๐ Checking AGENTS.md path references are alive..."
|
|
930
|
+
|
|
931
|
+
- id: remind-dogfood
|
|
932
|
+
script: remind-dogfood.sh
|
|
933
|
+
description: Reminds to run `make dogfood-full` after edits to core/ or adapters/.
|
|
934
|
+
category: meta
|
|
935
|
+
phase: G
|
|
936
|
+
timeout: 5
|
|
937
|
+
events:
|
|
938
|
+
- event: PostToolUse
|
|
939
|
+
matcher: Write|Edit
|
|
940
|
+
status_message: "๐งฌ Checking if meta-project dogfood refresh is needed..."
|
|
941
|
+
|
|
942
|
+
# โโ cognition (formula-agent supervisor) โโโโโโโโโโโโโโโโโโโ
|
|
943
|
+
- id: enforce-anti-ambiguity
|
|
944
|
+
script: enforce-anti-ambiguity.sh
|
|
945
|
+
description: Blocks code writes at EXECUTE phase when Anti-Ambiguity gate has failures. Bypassed for CLEAR 1.
|
|
946
|
+
category: cognition
|
|
947
|
+
phase: M
|
|
948
|
+
timeout: 5
|
|
949
|
+
events:
|
|
950
|
+
- event: PreToolUse
|
|
951
|
+
matcher: Write|Edit
|
|
952
|
+
status_message: "๐ Anti-Ambiguity gate check..."
|
|
953
|
+
|
|
954
|
+
- id: track-backtrack
|
|
955
|
+
script: track-backtrack.sh
|
|
956
|
+
description: Non-blocking advisor that fires when cos_backtrack_log records โฅ3 backtracks per session.
|
|
957
|
+
category: cognition
|
|
958
|
+
phase: M
|
|
959
|
+
timeout: 5
|
|
960
|
+
events:
|
|
961
|
+
- event: PostToolUse
|
|
962
|
+
matcher: mcp__coding-os__cos_backtrack_log
|
|
963
|
+
status_message: "โฉ๏ธ Backtrack counter updated..."
|
|
964
|
+
|
|
965
|
+
- id: track-discovery
|
|
966
|
+
script: track-discovery.sh
|
|
967
|
+
description: |
|
|
968
|
+
Discovery Protocol auto-trigger. Scans Write/Edit output for
|
|
969
|
+
discovery signal phrases (new actor, missing dependency,
|
|
970
|
+
undocumented behavior, etc.). On โฅ2 matches, emits a non-blocking
|
|
971
|
+
reminder to call cos_discovery with impact assessment + decision.
|
|
972
|
+
Reminder cooldown: 5 minutes per session to avoid spam.
|
|
973
|
+
Spec: formulas-en.md ยงNavigation Protocol ยง4 (Discovery Protocol).
|
|
974
|
+
category: cognition
|
|
975
|
+
phase: N
|
|
976
|
+
timeout: 5
|
|
977
|
+
events:
|
|
978
|
+
- event: PostToolUse
|
|
979
|
+
matcher: "Write|Edit"
|
|
980
|
+
status_message: "๐ Scanning for discoveries..."
|
|
981
|
+
|
|
982
|
+
- id: capture-tool-failure
|
|
983
|
+
script: capture-tool-failure.sh
|
|
984
|
+
description: |
|
|
985
|
+
Capture meaningful tool failures (especially hook-blocked
|
|
986
|
+
events) to the observations table so they feed failure_pattern_query
|
|
987
|
+
and learn_extract. Only captures blocked events and repeated failures โ
|
|
988
|
+
transient Bash errors are skipped to avoid noise. This closes the
|
|
989
|
+
"experience capture" gap: previously the system only learned from
|
|
990
|
+
completed outcomes, not from what failed mid-execution.
|
|
991
|
+
category: observability
|
|
992
|
+
phase: EVO
|
|
993
|
+
timeout: 5
|
|
994
|
+
events:
|
|
995
|
+
- event: PostToolUseFailure
|
|
996
|
+
matcher: ""
|
|
997
|
+
|
|
998
|
+
- id: auto-trace-rotate
|
|
999
|
+
script: auto-trace-rotate.sh
|
|
1000
|
+
description: |
|
|
1001
|
+
Stop hook โ rotate trace JSONL. gzip files older than
|
|
1002
|
+
COS_TRACE_GZIP_AGE_DAYS (default 3). Delete (gz or jsonl) older than
|
|
1003
|
+
COS_TRACE_DELETE_AGE_DAYS (default 30). Bounded, fire-and-forget.
|
|
1004
|
+
Closes the unbounded growth gap on .coding-os/<agent>/traces/*.jsonl.
|
|
1005
|
+
category: observability
|
|
1006
|
+
phase: O
|
|
1007
|
+
timeout: 30
|
|
1008
|
+
events:
|
|
1009
|
+
- event: Stop
|
|
1010
|
+
matcher: ""
|
|
1011
|
+
status_message: "๐งน Rotating old trace files..."
|
|
1012
|
+
|
|
1013
|
+
- id: snapshot-transcript
|
|
1014
|
+
script: snapshot-transcript.sh
|
|
1015
|
+
description: |
|
|
1016
|
+
Stop hook โ snapshot the live session transcript (transcript_path from
|
|
1017
|
+
the Stop payload) into $COS_AGENT_DIR/sessions/transcripts/<session-id>.jsonl
|
|
1018
|
+
so a workflow session is auditable in-tree, not only in the agent
|
|
1019
|
+
runtime's global store (~/.claude/projects/...). Copies only when the
|
|
1020
|
+
source grew (Stop fires per turn); fail-open when transcript_path is
|
|
1021
|
+
absent. The taskโsession link is the existing tasks.agent_session id.
|
|
1022
|
+
category: observability
|
|
1023
|
+
phase: O
|
|
1024
|
+
timeout: 30
|
|
1025
|
+
events:
|
|
1026
|
+
- event: Stop
|
|
1027
|
+
matcher: ""
|
|
1028
|
+
status_message: "๐ Snapshotting session transcript..."
|
|
1029
|
+
|
|
1030
|
+
- id: nudge-thinking-os
|
|
1031
|
+
script: nudge-thinking-os.sh
|
|
1032
|
+
description: |
|
|
1033
|
+
UserPromptSubmit nudge โ heuristic Complexity Gate + Rule 18 task reconciliation.
|
|
1034
|
+
Counts signal words (design, architect, debug, investigate, refactor,
|
|
1035
|
+
best way, optimize, etc.) plus length. For COMPLICATED+ emits a
|
|
1036
|
+
stdout additional-context block mandating: (1) cos_task_board check per
|
|
1037
|
+
Rule 18, (2) Complexity Gate recording, (3) thinking_os skill load,
|
|
1038
|
+
(4) cos_compose_chain call. Debounced once per session via
|
|
1039
|
+
.zoom-prompt-suggested marker; skipped if .thinking_os-gate already exists.
|
|
1040
|
+
category: cognition
|
|
1041
|
+
phase: O
|
|
1042
|
+
timeout: 10
|
|
1043
|
+
events:
|
|
1044
|
+
- event: UserPromptSubmit
|
|
1045
|
+
matcher: ""
|
|
1046
|
+
|
|
1047
|
+
- id: auto-compose-roles
|
|
1048
|
+
script: auto-compose-roles.sh
|
|
1049
|
+
description: |
|
|
1050
|
+
UserPromptSubmit auto-trigger โ for the recorded complexity gate
|
|
1051
|
+
(COMPLICATED/COMPLEX): (1) composes the 11-role chain via formula_composer
|
|
1052
|
+
and stamps .roles/.role so the Hub Roles panel + session banner reflect
|
|
1053
|
+
real activity; (2) runs learn_suggest and writes .learn-suggestions so the
|
|
1054
|
+
Orient recall arc fires and remind-learn-validate has input to validate.
|
|
1055
|
+
Closes the dead-trigger + dead-recall gaps (TASK-055) where
|
|
1056
|
+
cos_compose_chain / cos_learn_suggest had no automatic caller. Debounced
|
|
1057
|
+
once per (session, gate-class) via .roles-composed. Fail-open.
|
|
1058
|
+
category: cognition
|
|
1059
|
+
phase: O
|
|
1060
|
+
timeout: 10
|
|
1061
|
+
events:
|
|
1062
|
+
- event: UserPromptSubmit
|
|
1063
|
+
matcher: ""
|
|
1064
|
+
|
|
1065
|
+
- id: classify-task-mode
|
|
1066
|
+
script: classify-task-mode.sh
|
|
1067
|
+
description: |
|
|
1068
|
+
UserPromptSubmit โ classify the prompt into a persona-aware
|
|
1069
|
+
task-mode and write the verdict to $COS_AGENT_DIR/.task-mode.
|
|
1070
|
+
Modes: formal | propose-formal | query | chore | adhoc |
|
|
1071
|
+
gov-required. Downstream enforcement hooks read the marker so a
|
|
1072
|
+
Q&A turn does not pay the same cost as a multi-file refactor โ
|
|
1073
|
+
Rule 18 ("task reconciliation mandatory") is honored without
|
|
1074
|
+
forcing a TASK-NNN onto every analytical question. Decision
|
|
1075
|
+
matrix lives in docs/engineering/task-mode-matrix.md.
|
|
1076
|
+
category: cognition
|
|
1077
|
+
phase: O
|
|
1078
|
+
timeout: 5
|
|
1079
|
+
events:
|
|
1080
|
+
- event: UserPromptSubmit
|
|
1081
|
+
matcher: ""
|
|
1082
|
+
|
|
1083
|
+
- id: nudge-graph-os
|
|
1084
|
+
script: nudge-graph-os.sh
|
|
1085
|
+
description: |
|
|
1086
|
+
UserPromptSubmit nudge โ graph_os discovery. Pattern-matches the prompt
|
|
1087
|
+
against 13 structural-question patterns (callers, rename, blast radius,
|
|
1088
|
+
contracts, trace, similar, communities, context, detect-changes,
|
|
1089
|
+
entrypoints, doctor, export, path) โ bilingual (EN + Persian) โ and
|
|
1090
|
+
emits a one-line additional-context block recommending the exact
|
|
1091
|
+
cos_graph_* tool to call before Read/grep. Closes the dogfood gap
|
|
1092
|
+
where the agent never reaches the graph layer. Debounced per session
|
|
1093
|
+
via .graph-nudge-suggested marker.
|
|
1094
|
+
category: cognition
|
|
1095
|
+
phase: I
|
|
1096
|
+
timeout: 10
|
|
1097
|
+
events:
|
|
1098
|
+
- event: UserPromptSubmit
|
|
1099
|
+
matcher: ""
|
|
1100
|
+
|
|
1101
|
+
- id: nudge-model-routing
|
|
1102
|
+
script: nudge-model-routing.sh
|
|
1103
|
+
description: |
|
|
1104
|
+
UserPromptSubmit nudge โ model-routing directive (TASK-319). When
|
|
1105
|
+
hub-settings.json::model_routing.enabled, injects a one-line
|
|
1106
|
+
additional-context directive (once per session) telling the agent to
|
|
1107
|
+
consult cos_route_model at Classify and pass model+complexity at
|
|
1108
|
+
dispatch โ CLI/VSCode parity with the hub chat Auto option. Toggle
|
|
1109
|
+
off = silent exit, zero injected tokens. Contract:
|
|
1110
|
+
src/core/rules/model-routing.md.
|
|
1111
|
+
category: cognition
|
|
1112
|
+
phase: I
|
|
1113
|
+
timeout: 10
|
|
1114
|
+
events:
|
|
1115
|
+
- event: UserPromptSubmit
|
|
1116
|
+
matcher: ""
|
|
1117
|
+
|
|
1118
|
+
- id: nudge-git-mode
|
|
1119
|
+
script: nudge-git-mode.sh
|
|
1120
|
+
description: |
|
|
1121
|
+
UserPromptSubmit nudge โ pr-mode directive (TASK-615). When
|
|
1122
|
+
COS_GIT_WORKFLOW=pr, injects a one-line additional-context directive
|
|
1123
|
+
(once per session) telling the agent to start with `cos pr open` and
|
|
1124
|
+
edit inside the worktree, so pr-mode is surfaced proactively instead of
|
|
1125
|
+
learned by being block-shared-tree-edit BLOCKed. Trunk (default) =
|
|
1126
|
+
silent exit, zero injected tokens. Contract: docs/playbooks/pr-workflow.md.
|
|
1127
|
+
category: cognition
|
|
1128
|
+
phase: I
|
|
1129
|
+
timeout: 10
|
|
1130
|
+
events:
|
|
1131
|
+
- event: UserPromptSubmit
|
|
1132
|
+
matcher: ""
|
|
1133
|
+
|
|
1134
|
+
- id: nudge-task-discovery
|
|
1135
|
+
script: nudge-task-discovery.sh
|
|
1136
|
+
description: |
|
|
1137
|
+
Task-discovery nudge โ three events, all fail-open + debounced per
|
|
1138
|
+
session per leg. UserPromptSubmit: task-reference intent (TASK-NNN,
|
|
1139
|
+
check/show/look-at task; bilingual EN + Persian) โ additionalContext
|
|
1140
|
+
recommending `cos task-show TASK-NNN` / cos_task_search / cos_task_show
|
|
1141
|
+
(MCP) over cat/grep on docs/tasks/. PreToolUse Bash: warns (non-blocking)
|
|
1142
|
+
when a command reads docs/tasks/ directly (ls/grep/cat/find/head/tail/
|
|
1143
|
+
awk/sed/less/more/bat/rg/wc/nl/tac). PreToolUse Read: warns when the Read
|
|
1144
|
+
tool targets a docs/tasks/** path. Closes the screenshot-2 gap. Mirrors
|
|
1145
|
+
nudge-graph-os mechanism.
|
|
1146
|
+
category: cognition
|
|
1147
|
+
phase: O
|
|
1148
|
+
timeout: 10
|
|
1149
|
+
events:
|
|
1150
|
+
- event: UserPromptSubmit
|
|
1151
|
+
matcher: ""
|
|
1152
|
+
- event: PreToolUse
|
|
1153
|
+
matcher: Bash
|
|
1154
|
+
status_message: "๐๏ธ Suggesting cos task-show over docs/tasks read..."
|
|
1155
|
+
- event: PreToolUse
|
|
1156
|
+
matcher: Read
|
|
1157
|
+
status_message: "๐๏ธ Suggesting cos task-show over a docs/tasks Read..."
|
|
1158
|
+
|
|
1159
|
+
- id: nudge-docs-first
|
|
1160
|
+
script: nudge-docs-first.sh
|
|
1161
|
+
description: |
|
|
1162
|
+
UserPromptSubmit nudge โ docs-first SSOT discovery. Pattern-matches
|
|
1163
|
+
the prompt for code-edit intent (refactor, rename, fix, add,
|
|
1164
|
+
implement, change function/endpoint/handler/...; bilingual EN +
|
|
1165
|
+
Persian) AND no .doc-anchor populated AND task-mode not in
|
|
1166
|
+
query/chore/adhoc โ emits a one-line additional-context block
|
|
1167
|
+
pointing to cos_doc_search / cos_doc_header and the procedure in
|
|
1168
|
+
docs/governance/docs-first-protocol.md. Closes the gap where
|
|
1169
|
+
enforce-doc-anchor.sh fires only on Write/Edit, but user intent
|
|
1170
|
+
already signals "code coming" at prompt time. Debounced per session
|
|
1171
|
+
via .docs-first-nudged marker.
|
|
1172
|
+
category: cognition
|
|
1173
|
+
phase: O
|
|
1174
|
+
timeout: 10
|
|
1175
|
+
events:
|
|
1176
|
+
- event: UserPromptSubmit
|
|
1177
|
+
matcher: ""
|
|
1178
|
+
|
|
1179
|
+
- id: session-skill-primer
|
|
1180
|
+
script: session-skill-primer.sh
|
|
1181
|
+
description: |
|
|
1182
|
+
SessionStart prime card โ emits a compact additionalContext block
|
|
1183
|
+
listing the skills that enforce-skill.sh (PreToolUse Write/Edit)
|
|
1184
|
+
will BLOCK without. Reads SSOT:
|
|
1185
|
+
$COS_STATE_DIR/installed-manifest.json::templates โ active stacks;
|
|
1186
|
+
src/templates/<stack>/stack.yaml โ primary_skill + skill_enforcement
|
|
1187
|
+
table. Closes the gap where the agent only discovers required
|
|
1188
|
+
skills reactively after the first block. Fires on startup AND on
|
|
1189
|
+
compact|resume โ in a multi-hour session a compaction can outlive
|
|
1190
|
+
the 120-min .active-skill marker, so the card must re-prime after
|
|
1191
|
+
context loss (mirrors rules-primer). SessionStart
|
|
1192
|
+
fires once per boundary, so no debounce is needed. Always exits 0.
|
|
1193
|
+
category: cognition
|
|
1194
|
+
phase: P
|
|
1195
|
+
timeout: 10
|
|
1196
|
+
events:
|
|
1197
|
+
- event: SessionStart
|
|
1198
|
+
matcher: startup
|
|
1199
|
+
status_message: "๐ง Priming required-skill card..."
|
|
1200
|
+
- event: SessionStart
|
|
1201
|
+
matcher: compact|resume
|
|
1202
|
+
status_message: "๐ง Re-priming required-skill card..."
|
|
1203
|
+
|
|
1204
|
+
- id: rules-primer
|
|
1205
|
+
script: rules-primer.sh
|
|
1206
|
+
description: |
|
|
1207
|
+
SessionStart prime card โ injects a ~200-token workflow-integrity card
|
|
1208
|
+
at every session boundary (startup, compact, resume) so the agent enters
|
|
1209
|
+
turn-1 knowing Critical Rule 25: task status changes go through
|
|
1210
|
+
cos_task_move / cos task-done (never a hand-Edit;
|
|
1211
|
+
enforce-task-transition BLOCKs it), task lookup via
|
|
1212
|
+
cos task-show / cos_task_search (never ls/grep on docs/tasks), gate via
|
|
1213
|
+
cos_classify_prompt, and that cos_* tools are deferred (ToolSearch first).
|
|
1214
|
+
Full contract: critical-rules.md ยง Rule 25.
|
|
1215
|
+
Always exits 0.
|
|
1216
|
+
category: cognition
|
|
1217
|
+
phase: P
|
|
1218
|
+
timeout: 10
|
|
1219
|
+
events:
|
|
1220
|
+
- event: SessionStart
|
|
1221
|
+
matcher: startup
|
|
1222
|
+
status_message: "๐ Priming workflow-integrity rules card..."
|
|
1223
|
+
- event: SessionStart
|
|
1224
|
+
matcher: compact|resume
|
|
1225
|
+
status_message: "๐ Re-priming workflow-integrity rules card..."
|
|
1226
|
+
|
|
1227
|
+
- id: ensure-agent-memory-link
|
|
1228
|
+
script: ensure-agent-memory-link.sh
|
|
1229
|
+
adapter_scope: claude
|
|
1230
|
+
description: |
|
|
1231
|
+
SessionStart โ turns the harness's machine-local memory dir
|
|
1232
|
+
(~/.claude/projects/<slug>/memory) into a symlink onto the repo's
|
|
1233
|
+
committed .agents/memory, migrating existing files without clobber.
|
|
1234
|
+
Portable agent memory: a fresh clone reconnects on the first session.
|
|
1235
|
+
Idempotent, self-repairing, fail-open. Spec:
|
|
1236
|
+
docs/engineering/learning-extraction.md ยง Versioned agent memory.
|
|
1237
|
+
category: observability
|
|
1238
|
+
phase: "0"
|
|
1239
|
+
timeout: 10
|
|
1240
|
+
events:
|
|
1241
|
+
- event: SessionStart
|
|
1242
|
+
matcher: startup
|
|
1243
|
+
status_message: "๐ Linking versioned agent memory..."
|
|
1244
|
+
- event: SessionStart
|
|
1245
|
+
matcher: resume
|
|
1246
|
+
status_message: "๐ Re-checking agent memory link..."
|
|
1247
|
+
|
|
1248
|
+
- id: sync-agent-memory
|
|
1249
|
+
script: sync-agent-memory.sh
|
|
1250
|
+
adapter_scope: claude
|
|
1251
|
+
description: |
|
|
1252
|
+
Stop โ renders Trusted lessons into .agents/memory/MEMORY.md (generated
|
|
1253
|
+
block, manual notes preserved) and harvests foreign notes back into
|
|
1254
|
+
learned_patterns with a content-hash ledger so exported lessons are
|
|
1255
|
+
never re-imported. Fail-open. Spec:
|
|
1256
|
+
docs/engineering/learning-extraction.md ยง Versioned agent memory.
|
|
1257
|
+
category: observability
|
|
1258
|
+
phase: "0"
|
|
1259
|
+
timeout: 30
|
|
1260
|
+
events:
|
|
1261
|
+
- event: Stop
|
|
1262
|
+
matcher: ""
|