coding-os 0.3.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- adapters/claude/README.md +6 -0
- adapters/claude/_install_helpers/extract_stacks.py +43 -0
- adapters/claude/_install_helpers/update_mcp_json.py +75 -0
- adapters/claude/adapter.yaml +164 -0
- adapters/claude/hooks/README.md +40 -0
- adapters/claude/hooks/agent_memory_sync.py +131 -0
- adapters/claude/hooks/ensure-agent-memory-link.sh +36 -0
- adapters/claude/hooks/sync-agent-memory.sh +21 -0
- adapters/claude/install.sh +86 -0
- adapters/claude/sdk_dispatcher.py +871 -0
- adapters/claude/settings.local.template.json +31 -0
- adapters/claude/settings.template.json +808 -0
- adapters/claude/update_mcp_json.py +85 -0
- adapters/codex/adapter.yaml +254 -0
- adapters/codex/chat_provider.py +230 -0
- adapters/codex/commands/formula-f1.md +129 -0
- adapters/codex/commands/formula-f10.md +100 -0
- adapters/codex/commands/formula-f11.md +123 -0
- adapters/codex/commands/formula-f2.md +139 -0
- adapters/codex/commands/formula-f3.md +127 -0
- adapters/codex/commands/formula-f4.md +101 -0
- adapters/codex/commands/formula-f5.md +135 -0
- adapters/codex/commands/formula-f6.md +147 -0
- adapters/codex/commands/formula-f7.md +111 -0
- adapters/codex/commands/formula-f8.md +133 -0
- adapters/codex/commands/formula-f9.md +112 -0
- adapters/codex/enable_codex_hooks.py +94 -0
- adapters/codex/ensure_codex_mcp.py +124 -0
- adapters/codex/hooks/codex-merge-hook-output.py +72 -0
- adapters/codex/hooks/codex-normalize-edit.py +96 -0
- adapters/codex/hooks/codex-postedit-dispatch.sh +75 -0
- adapters/codex/hooks/codex-posttool-dispatch.sh +70 -0
- adapters/codex/hooks/codex-preedit-dispatch.sh +83 -0
- adapters/codex/hooks/codex-pretool-dispatch.sh +82 -0
- adapters/codex/hooks/codex-sessionend-dispatch.sh +20 -0
- adapters/codex/hooks/codex-sessionstart-dispatch.sh +68 -0
- adapters/codex/hooks/codex-stop-dispatch.sh +73 -0
- adapters/codex/hooks/codex-userpromptsubmit-dispatch.sh +74 -0
- adapters/codex/hooks.template.json +208 -0
- adapters/codex/install.sh +83 -0
- adapters/codex/sdk_dispatcher.py +449 -0
- board_os/__init__.py +39 -0
- board_os/_agent_runtime.py +256 -0
- board_os/config.py +421 -0
- board_os/git_coherence.py +107 -0
- board_os/hub_adapter_manifest.py +140 -0
- board_os/mcp_tools.py +3228 -0
- board_os/migration.py +166 -0
- board_os/parser.py +317 -0
- board_os/presence.py +156 -0
- board_os/sync.py +320 -0
- board_os/transition_gates.py +224 -0
- board_os/transition_gates_cli.py +272 -0
- board_os/transition_gates_validator.py +551 -0
- board_os/verify_suites.py +126 -0
- board_os/verify_suites_cli.py +328 -0
- board_os/workflow.py +967 -0
- cli/__init__.py +0 -0
- cli/_data_types.py +248 -0
- cli/_init_helpers.py +587 -0
- cli/_resources.py +100 -0
- cli/adapter_registry.py +239 -0
- cli/add_stack.py +315 -0
- cli/aggregator.py +438 -0
- cli/board_commands.py +1218 -0
- cli/brain_commands.py +255 -0
- cli/cognition.py +345 -0
- cli/config_composer.py +349 -0
- cli/core_version.py +41 -0
- cli/cron_commands.py +278 -0
- cli/db_reset.py +298 -0
- cli/doc_commands.py +111 -0
- cli/doctor.py +2953 -0
- cli/doctor_board.py +365 -0
- cli/doctor_extras.py +1121 -0
- cli/doctor_graph.py +608 -0
- cli/doctor_tokens.py +254 -0
- cli/graph_commands.py +1265 -0
- cli/hook_renderer.py +393 -0
- cli/hub_commands.py +580 -0
- cli/list_adapters.py +79 -0
- cli/list_stacks.py +105 -0
- cli/logs_commands.py +89 -0
- cli/main.py +3070 -0
- cli/materialize_file.py +65 -0
- cli/mcp_start.py +153 -0
- cli/module_commands.py +513 -0
- cli/pr_commands.py +2024 -0
- cli/preset_commands.py +126 -0
- cli/preset_registry.py +171 -0
- cli/project_overrides.py +119 -0
- cli/registry.py +365 -0
- cli/remove_stack.py +492 -0
- cli/renderer.py +620 -0
- cli/setup.py +464 -0
- cli/skill_commands.py +689 -0
- cli/skill_registry.py +235 -0
- cli/skills_list.py +332 -0
- cli/stack_lint.py +351 -0
- cli/stack_registry.py +688 -0
- cli/subsystems.py +335 -0
- cli/sync_all.py +310 -0
- cli/tail_command.py +410 -0
- cli/update.py +608 -0
- cli/verify_since_edit.py +439 -0
- coding_os-0.3.2.dist-info/METADATA +508 -0
- coding_os-0.3.2.dist-info/RECORD +1304 -0
- coding_os-0.3.2.dist-info/WHEEL +5 -0
- coding_os-0.3.2.dist-info/entry_points.txt +5 -0
- coding_os-0.3.2.dist-info/licenses/LICENSE +201 -0
- coding_os-0.3.2.dist-info/top_level.txt +10 -0
- core/__init__.py +0 -0
- core/board_os/__init__.py +39 -0
- core/board_os/_agent_runtime.py +256 -0
- core/board_os/config.py +421 -0
- core/board_os/git_coherence.py +107 -0
- core/board_os/hub_adapter_manifest.py +140 -0
- core/board_os/mcp_tools.py +3228 -0
- core/board_os/migration.py +166 -0
- core/board_os/parser.py +317 -0
- core/board_os/presence.py +156 -0
- core/board_os/sync.py +320 -0
- core/board_os/transition-gates.yaml +176 -0
- core/board_os/transition_gates.py +224 -0
- core/board_os/transition_gates_cli.py +272 -0
- core/board_os/transition_gates_validator.py +551 -0
- core/board_os/verify-suites.yaml +113 -0
- core/board_os/verify_suites.py +126 -0
- core/board_os/verify_suites_cli.py +328 -0
- core/board_os/workflow.py +967 -0
- core/commands/board.md +27 -0
- core/commands/classify.md +23 -0
- core/commands/compose.md +23 -0
- core/commands/daily.md +31 -0
- core/commands/diagnose.md +7 -0
- core/commands/memory-search.md +23 -0
- core/commands/new-project.md +33 -0
- core/commands/retro.md +38 -0
- core/commands/review.md +14 -0
- core/commands/task.md +17 -0
- core/commands/verify.md +34 -0
- core/docs/thinking_os-final-edition.md +1449 -0
- core/doctor-config.yaml +74 -0
- core/graph_os/__init__.py +29 -0
- core/graph_os/backend.py +233 -0
- core/graph_os/backends/__init__.py +13 -0
- core/graph_os/backends/sqlite_backend.py +1053 -0
- core/graph_os/bench/__init__.py +17 -0
- core/graph_os/bench/fixtures.py +56 -0
- core/graph_os/bench/harness.py +95 -0
- core/graph_os/bench/persian_precision.py +142 -0
- core/graph_os/bench/scale_500k.py +120 -0
- core/graph_os/bench/token_cost.py +170 -0
- core/graph_os/bench/viewer_fps.py +110 -0
- core/graph_os/communities.py +410 -0
- core/graph_os/enterprise.py +218 -0
- core/graph_os/entry_points.py +226 -0
- core/graph_os/extractors/__init__.py +25 -0
- core/graph_os/extractors/code_generic.py +914 -0
- core/graph_os/extractors/code_go.py +1422 -0
- core/graph_os/extractors/code_json.py +340 -0
- core/graph_os/extractors/code_php.py +979 -0
- core/graph_os/extractors/code_python.py +1454 -0
- core/graph_os/extractors/code_shell.py +538 -0
- core/graph_os/extractors/code_toml.py +302 -0
- core/graph_os/extractors/code_ts.py +1665 -0
- core/graph_os/extractors/code_yaml.py +394 -0
- core/graph_os/extractors/contracts.py +1592 -0
- core/graph_os/extractors/md_links.py +890 -0
- core/graph_os/extractors/task_deps.py +345 -0
- core/graph_os/groups/__init__.py +22 -0
- core/graph_os/groups/cross_repo.py +156 -0
- core/graph_os/groups/manifest.py +141 -0
- core/graph_os/ingest/__init__.py +19 -0
- core/graph_os/ingest/base.py +306 -0
- core/graph_os/ingest/github.py +112 -0
- core/graph_os/ingest/zip.py +95 -0
- core/graph_os/toolchain.py +393 -0
- core/graph_os/tools/__init__.py +9 -0
- core/graph_os/tools/graph.py +5573 -0
- core/graph_os/tools/reindex_dispatch.py +730 -0
- core/graph_os/tree_sitter_overlay.py +235 -0
- core/graph_os/types.py +252 -0
- core/graph_os/vec_index.py +277 -0
- core/graph_os/viewer/__init__.py +12 -0
- core/graph_os/viewer/exporter.py +93 -0
- core/graph_os/viewer/template.py +189 -0
- core/hooks/_helpers/_paths.py +40 -0
- core/hooks/_helpers/advance_role.py +72 -0
- core/hooks/_helpers/auto_compose.py +228 -0
- core/hooks/_helpers/auto_validate_lessons.py +55 -0
- core/hooks/_helpers/branch_guard_check.py +796 -0
- core/hooks/_helpers/check_commit_message.py +108 -0
- core/hooks/_helpers/check_dangerous_rm.py +80 -0
- core/hooks/_helpers/check_git_bypass.py +154 -0
- core/hooks/_helpers/check_git_destructive.py +77 -0
- core/hooks/_helpers/check_settings_write.py +97 -0
- core/hooks/_helpers/consume_override.py +51 -0
- core/hooks/_helpers/context_budget.py +77 -0
- core/hooks/_helpers/cos_say_json.py +103 -0
- core/hooks/_helpers/destructive_edit_check.py +163 -0
- core/hooks/_helpers/detect_status_transition.py +82 -0
- core/hooks/_helpers/digest_regen.py +56 -0
- core/hooks/_helpers/doc_sync_check.py +498 -0
- core/hooks/_helpers/drain_embedding_outbox.py +52 -0
- core/hooks/_helpers/extract_additional_context.py +51 -0
- core/hooks/_helpers/extract_commit_msg_arg.py +74 -0
- core/hooks/_helpers/git_command_parse.py +424 -0
- core/hooks/_helpers/git_settings_fields.py +47 -0
- core/hooks/_helpers/graph_context_match.py +37 -0
- core/hooks/_helpers/graph_marker_check.py +70 -0
- core/hooks/_helpers/jit_recall.py +56 -0
- core/hooks/_helpers/json_field.py +41 -0
- core/hooks/_helpers/narrative_signal.py +59 -0
- core/hooks/_helpers/observation_count.py +31 -0
- core/hooks/_helpers/pre_commit_batch.py +177 -0
- core/hooks/_helpers/pre_commit_fake_input.py +42 -0
- core/hooks/_helpers/presence_gc.py +102 -0
- core/hooks/_helpers/presence_write.py +167 -0
- core/hooks/_helpers/recover_indirect.py +35 -0
- core/hooks/_helpers/routing_evolution.py +104 -0
- core/hooks/_helpers/session_recap.py +72 -0
- core/hooks/_helpers/skill_primer.py +229 -0
- core/hooks/_helpers/task_sync.py +59 -0
- core/hooks/_helpers/tool_failure_capture.py +147 -0
- core/hooks/_helpers/trajectory_autosnap.py +278 -0
- core/hooks/_helpers/trajectory_startup.py +62 -0
- core/hooks/_helpers/turn_summary.py +82 -0
- core/hooks/_helpers/validate_task_frontmatter.py +98 -0
- core/hooks/_helpers/wip_limit_check.py +103 -0
- core/hooks/_helpers/wip_lines.py +53 -0
- core/hooks/_helpers/work_log_append.py +89 -0
- core/hooks/_helpers/wrap_dispatch_output.py +82 -0
- core/hooks/advance-role.sh +48 -0
- core/hooks/agent-presence.sh +179 -0
- core/hooks/auto-brain-decay.sh +184 -0
- core/hooks/auto-compose-roles.sh +83 -0
- core/hooks/auto-graph-reconcile-shell.sh +119 -0
- core/hooks/auto-regen-doc-index.sh +120 -0
- core/hooks/auto-reindex-docs.sh +130 -0
- core/hooks/auto-task-sync.sh +56 -0
- core/hooks/auto-trace-rotate.sh +88 -0
- core/hooks/block-bad-patterns.sh +212 -0
- core/hooks/block-dangerous-commands.sh +182 -0
- core/hooks/block-hardcoded-literals.sh +90 -0
- core/hooks/block-migration-conflict.sh +114 -0
- core/hooks/block-protected-files.sh +129 -0
- core/hooks/block-secrets.sh +185 -0
- core/hooks/block-shared-tree-edit.sh +75 -0
- core/hooks/block-uv-heredoc.sh +78 -0
- core/hooks/branch-guard.sh +122 -0
- core/hooks/capture-observation.sh +76 -0
- core/hooks/capture-tool-failure.sh +24 -0
- core/hooks/capture-work-log.sh +89 -0
- core/hooks/check-agents-md-refs.sh +75 -0
- core/hooks/check-agents-md-size.sh +49 -0
- core/hooks/check-capture-worked.sh +148 -0
- core/hooks/check-doc-size.sh +61 -0
- core/hooks/check-mcp-extras.sh +92 -0
- core/hooks/check-state.sh +87 -0
- core/hooks/classify-task-mode.sh +103 -0
- core/hooks/cos-env.sh +1301 -0
- core/hooks/drain-embedding-outbox.sh +24 -0
- core/hooks/enforce-anti-ambiguity.sh +74 -0
- core/hooks/enforce-commit-message.sh +73 -0
- core/hooks/enforce-doc-anchor.sh +224 -0
- core/hooks/enforce-doc-sync.sh +206 -0
- core/hooks/enforce-graph-context.sh +89 -0
- core/hooks/enforce-graph-first-read.sh +94 -0
- core/hooks/enforce-memory-check.sh +128 -0
- core/hooks/enforce-rename-plan.sh +78 -0
- core/hooks/enforce-scaffold-boundary.sh +68 -0
- core/hooks/enforce-skill.sh +125 -0
- core/hooks/enforce-task-body.sh +52 -0
- core/hooks/enforce-task-start.sh +81 -0
- core/hooks/enforce-task-transition.sh +75 -0
- core/hooks/enforce-template.sh +143 -0
- core/hooks/enforce-verify.sh +112 -0
- core/hooks/enforce-wip-limit.sh +43 -0
- core/hooks/enforce-zoom.sh +69 -0
- core/hooks/ensure-hub-up.sh +67 -0
- core/hooks/inject-mcp-caller-session.sh +70 -0
- core/hooks/jit-recall.sh +65 -0
- core/hooks/link-commit-to-task.sh +143 -0
- core/hooks/lint-task.sh +40 -0
- core/hooks/nudge-docs-first.sh +71 -0
- core/hooks/nudge-git-mode.sh +29 -0
- core/hooks/nudge-graph-os.sh +118 -0
- core/hooks/nudge-learn-narrative.sh +36 -0
- core/hooks/nudge-model-routing.sh +32 -0
- core/hooks/nudge-reentry.sh +101 -0
- core/hooks/nudge-reuse-first.sh +68 -0
- core/hooks/nudge-task-discovery.sh +81 -0
- core/hooks/nudge-thinking-os.sh +109 -0
- core/hooks/pr-reap.sh +23 -0
- core/hooks/reclaim-sweep.sh +58 -0
- core/hooks/record-verify-auto.sh +77 -0
- core/hooks/record-verify.sh +74 -0
- core/hooks/regen-reminder.sh +104 -0
- core/hooks/registry.yaml +1262 -0
- core/hooks/remind-daily.sh +27 -0
- core/hooks/remind-dogfood.sh +70 -0
- core/hooks/remind-learn-validate.sh +94 -0
- core/hooks/rules-primer.sh +50 -0
- core/hooks/search-enforce-inventory.sh +108 -0
- core/hooks/search-verify-remaining.sh +132 -0
- core/hooks/session-context.sh +729 -0
- core/hooks/session-end.sh +145 -0
- core/hooks/session-skill-primer.sh +43 -0
- core/hooks/snapshot-transcript.sh +56 -0
- core/hooks/sync-task-current.sh +85 -0
- core/hooks/test-first-reminder.sh +120 -0
- core/hooks/test-governor.sh +173 -0
- core/hooks/thinking_os-gate.sh +52 -0
- core/hooks/track-backtrack.sh +35 -0
- core/hooks/track-discovery.sh +121 -0
- core/hooks/track-skill.sh +53 -0
- core/hooks/validate-task-frontmatter.sh +49 -0
- core/hooks/verify-rename-callers.sh +119 -0
- core/hooks/warn-abandoned-task.sh +99 -0
- core/hooks/warn-destructive-edit.sh +64 -0
- core/hooks/warn-diff-size.sh +43 -0
- core/hooks/warn-graph-empty.sh +81 -0
- core/hooks/warn-mcp-down.sh +190 -0
- core/hooks/write-state.sh +55 -0
- core/logging_os/__init__.py +33 -0
- core/logging_os/api.py +127 -0
- core/logging_os/bridge.py +80 -0
- core/logging_os/config.py +172 -0
- core/logging_os/fingerprint.py +25 -0
- core/logging_os/redact.py +53 -0
- core/logging_os/render.py +83 -0
- core/logging_os/sinks.py +164 -0
- core/rules/anti-overengineering.md +44 -0
- core/rules/api-contract-discipline.md +41 -0
- core/rules/dimension-registry.md +155 -0
- core/rules/git-workflow.md +57 -0
- core/rules/memory.md +46 -0
- core/rules/model-routing.md +22 -0
- core/rules/skill-enforcement.md +75 -0
- core/rules/test-discipline.md +38 -0
- core/rules/thinking_os.md +48 -0
- core/rules/transparency-banner.md +37 -0
- core/runtime_paths.yaml +36 -0
- core/scaffold_manifest.json +14430 -0
- core/scheduled/__init__.py +0 -0
- core/scheduled/_activity.py +126 -0
- core/scheduled/_state.py +113 -0
- core/scheduled/config.py +86 -0
- core/scheduled/dep_reconcile.py +135 -0
- core/scheduled/error_sweep.py +137 -0
- core/scheduled/nightly.py +930 -0
- core/scheduled/responsive_extract.py +65 -0
- core/schemas/adapter.schema.json +269 -0
- core/schemas/preset.schema.json +50 -0
- core/schemas/skill.schema.json +81 -0
- core/schemas/stack.schema.json +404 -0
- core/scripts/_lib.sh +9 -0
- core/scripts/docs-lint.sh +228 -0
- core/scripts/docs-nav-fix.sh +133 -0
- core/scripts/docs-staleness-check.sh +154 -0
- core/scripts/install-adapter.sh +266 -0
- core/scripts/link-stack-skills.sh +52 -0
- core/scripts/log-latest.sh +106 -0
- core/scripts/log-search.sh +89 -0
- core/scripts/log-write.sh +134 -0
- core/scripts/ref-resolve.sh +71 -0
- core/skills/a11y/SKILL.md +305 -0
- core/skills/a11y/assets/a11y-checklist.md +137 -0
- core/skills/a11y/references/aria-and-focus.md +247 -0
- core/skills/a11y/references/rn-accessibility.md +343 -0
- core/skills/a11y/references/screen-reader-testing.md +190 -0
- core/skills/agent-memory/SKILL.md +191 -0
- core/skills/agent-memory/assets/memory-checklist.md +21 -0
- core/skills/agent-memory/references/memory-recipes.md +57 -0
- core/skills/api-design/SKILL.md +232 -0
- core/skills/api-design/assets/api-design-checklist.md +110 -0
- core/skills/api-design/references/error-envelope.md +381 -0
- core/skills/api-design/references/idempotency-pagination.md +312 -0
- core/skills/api-design/references/rest-contracts.md +426 -0
- core/skills/auth-patterns/SKILL.md +352 -0
- core/skills/auth-patterns/assets/auth-checklist.md +118 -0
- core/skills/auth-patterns/references/jwt-and-service-tokens.md +343 -0
- core/skills/auth-patterns/references/passkeys-2fa.md +289 -0
- core/skills/auth-patterns/references/sessions-vs-jwt.md +230 -0
- core/skills/auth-patterns/scripts/cookie-flag-check.py +146 -0
- core/skills/backend-fundamentals/SKILL.md +238 -0
- core/skills/backend-fundamentals/assets/backend-checklist.md +27 -0
- core/skills/backend-fundamentals/references/backend-patterns.md +56 -0
- core/skills/backend-fundamentals/scripts/check_layering.py +83 -0
- core/skills/clean-code/SKILL.md +642 -0
- core/skills/clean-code/scripts/audit-fail-closed.py +167 -0
- core/skills/codebase-explorer/SKILL.md +89 -0
- core/skills/codebase-explorer/assets/reading-checklist.md +24 -0
- core/skills/codebase-explorer/references/reading-strategies.md +52 -0
- core/skills/codebase-explorer/scripts/outline.py +99 -0
- core/skills/db-design/SKILL.md +327 -0
- core/skills/db-design/assets/migration-template.sql +49 -0
- core/skills/db-design/references/migration-discipline.md +290 -0
- core/skills/db-design/references/postgres-patterns.md +340 -0
- core/skills/db-design/scripts/migration-safety.sh +150 -0
- core/skills/deployment-cicd/SKILL.md +260 -0
- core/skills/deployment-cicd/assets/deploy-checklist.md +26 -0
- core/skills/deployment-cicd/references/pipeline-and-release.md +54 -0
- core/skills/deployment-cicd/scripts/lint_workflow.py +79 -0
- core/skills/docker/SKILL.md +114 -0
- core/skills/docker/assets/dockerfile-checklist.md +31 -0
- core/skills/docker/references/compose-patterns.md +66 -0
- core/skills/docker/references/dockerfile-optimization.md +64 -0
- core/skills/docker/scripts/lint_dockerfile.sh +48 -0
- core/skills/docker/versions.json +16 -0
- core/skills/end-to-end-testing/SKILL.md +101 -0
- core/skills/end-to-end-testing/assets/e2e-checklist.md +23 -0
- core/skills/end-to-end-testing/references/maestro.md +63 -0
- core/skills/end-to-end-testing/references/playwright.md +68 -0
- core/skills/end-to-end-testing/scripts/lint_e2e.py +88 -0
- core/skills/end-to-end-testing/versions.json +16 -0
- core/skills/frontend-design/SKILL.md +76 -0
- core/skills/frontend-design/assets/design-checklist.md +29 -0
- core/skills/frontend-design/references/design-principles.md +65 -0
- core/skills/frontend-design/scripts/check_contrast.py +89 -0
- core/skills/frontend-fundamentals/SKILL.md +213 -0
- core/skills/frontend-fundamentals/assets/frontend-checklist.md +25 -0
- core/skills/frontend-fundamentals/references/rendering-and-state.md +66 -0
- core/skills/frontend-fundamentals/scripts/check_frontend.py +86 -0
- core/skills/graph-explorer/SKILL.md +215 -0
- core/skills/graph-explorer/scripts/explain-impact.sh +64 -0
- core/skills/graphql/SKILL.md +187 -0
- core/skills/grpc-microservices/SKILL.md +174 -0
- core/skills/hexagonal-architecture/SKILL.md +199 -0
- core/skills/hexagonal-architecture/assets/folder-scaffold.md +233 -0
- core/skills/hexagonal-architecture/references/anti-patterns.md +129 -0
- core/skills/hexagonal-architecture/references/go-fiber-layout.md +429 -0
- core/skills/hexagonal-architecture/references/python-fastapi-layout.md +453 -0
- core/skills/hexagonal-architecture/references/react-native-layout.md +428 -0
- core/skills/i18n/SKILL.md +126 -0
- core/skills/incident-response/SKILL.md +225 -0
- core/skills/incident-response/assets/incident-checklist.md +29 -0
- core/skills/incident-response/references/severity-and-runbook.md +53 -0
- core/skills/incident-response/scripts/classify_severity.py +86 -0
- core/skills/linux-sysadmin/SKILL.md +115 -0
- core/skills/linux-sysadmin/assets/hardening-checklist.md +29 -0
- core/skills/linux-sysadmin/references/ssh-hardening.md +62 -0
- core/skills/linux-sysadmin/references/systemd-and-services.md +77 -0
- core/skills/linux-sysadmin/scripts/triage.sh +50 -0
- core/skills/linux-sysadmin/versions.json +17 -0
- core/skills/llm-patterns/SKILL.md +410 -0
- core/skills/llm-patterns/assets/llm-feature-checklist.md +26 -0
- core/skills/llm-patterns/references/rag-and-evals.md +59 -0
- core/skills/llm-patterns/scripts/estimate_tokens.py +75 -0
- core/skills/messaging-queues/SKILL.md +142 -0
- core/skills/mobile-fundamentals/SKILL.md +406 -0
- core/skills/mobile-fundamentals/assets/mobile-launch-checklist.md +130 -0
- core/skills/mobile-fundamentals/references/navigation-and-deep-links.md +337 -0
- core/skills/mobile-fundamentals/references/offline-sync.md +339 -0
- core/skills/node-backend/SKILL.md +114 -0
- core/skills/node-backend/assets/node-checklist.md +25 -0
- core/skills/node-backend/references/async-and-errors.md +67 -0
- core/skills/node-backend/references/event-loop.md +65 -0
- core/skills/node-backend/scripts/check_package.py +78 -0
- core/skills/node-backend/versions.json +17 -0
- core/skills/observability/SKILL.md +289 -0
- core/skills/observability/assets/observability-checklist.md +27 -0
- core/skills/observability/references/instrumentation.md +57 -0
- core/skills/observability/scripts/lint_logging.py +77 -0
- core/skills/payments/SKILL.md +102 -0
- core/skills/performance/SKILL.md +305 -0
- core/skills/performance/assets/perf-checklist.md +143 -0
- core/skills/performance/references/mobile-performance.md +249 -0
- core/skills/performance/references/web-vitals.md +209 -0
- core/skills/php/SKILL.md +116 -0
- core/skills/php/assets/php-checklist.md +26 -0
- core/skills/php/references/modern-php.md +64 -0
- core/skills/php/references/security.md +72 -0
- core/skills/php/scripts/scan_php_smells.py +99 -0
- core/skills/php/versions.json +9 -0
- core/skills/pr-mode-driver/SKILL.md +65 -0
- core/skills/realtime-websockets/SKILL.md +152 -0
- core/skills/redis/SKILL.md +105 -0
- core/skills/redis/assets/redis-checklist.md +27 -0
- core/skills/redis/references/operations.md +66 -0
- core/skills/redis/references/patterns.md +62 -0
- core/skills/redis/scripts/analyze_info.py +101 -0
- core/skills/redis/versions.json +9 -0
- core/skills/search/SKILL.md +91 -0
- core/skills/search/references/grep.md +76 -0
- core/skills/search/scripts/verify-count.sh +73 -0
- core/skills/search-infra/SKILL.md +109 -0
- core/skills/security-mobile/SKILL.md +394 -0
- core/skills/security-mobile/assets/mobile-security-checklist.md +117 -0
- core/skills/security-mobile/references/masvs-l1-checklist.md +127 -0
- core/skills/security-web/SKILL.md +217 -0
- core/skills/security-web/assets/security-web-checklist.md +167 -0
- core/skills/security-web/references/owasp-top-10.md +551 -0
- core/skills/security-web/references/supply-chain.md +179 -0
- core/skills/security-web/scripts/csp-check.sh +153 -0
- core/skills/shell-scripting/SKILL.md +128 -0
- core/skills/shell-scripting/assets/script-checklist.md +33 -0
- core/skills/shell-scripting/references/argument-parsing.md +84 -0
- core/skills/shell-scripting/references/bash-robustness.md +78 -0
- core/skills/shell-scripting/scripts/lint_script.sh +53 -0
- core/skills/shell-scripting/scripts/new_script.py +131 -0
- core/skills/shell-scripting/versions.json +23 -0
- core/skills/sql-authoring/SKILL.md +104 -0
- core/skills/sql-authoring/assets/query-review-checklist.md +26 -0
- core/skills/sql-authoring/references/query-patterns.md +89 -0
- core/skills/sql-authoring/references/reading-explain.md +52 -0
- core/skills/sql-authoring/scripts/analyze_plan.py +100 -0
- core/skills/sql-authoring/versions.json +17 -0
- core/skills/state-management/SKILL.md +428 -0
- core/skills/state-management/references/tanstack-query-recipes.md +301 -0
- core/skills/state-management/references/zustand-recipes.md +364 -0
- core/skills/supabase/SKILL.md +108 -0
- core/skills/supabase/assets/supabase-checklist.md +26 -0
- core/skills/supabase/references/realtime-and-storage.md +55 -0
- core/skills/supabase/references/rls-and-auth.md +65 -0
- core/skills/supabase/scripts/check_rls.py +88 -0
- core/skills/supabase/versions.json +9 -0
- core/skills/task-driver/SKILL.md +272 -0
- core/skills/task-driver/scripts/task-lint.sh +163 -0
- core/skills/technical-writing/SKILL.md +85 -0
- core/skills/technical-writing/assets/doc-checklist.md +29 -0
- core/skills/technical-writing/references/doc-anatomy.md +53 -0
- core/skills/technical-writing/references/writing-craft.md +59 -0
- core/skills/technical-writing/scripts/new_doc.py +81 -0
- core/skills/terraform-k8s/SKILL.md +133 -0
- core/skills/testing-strategy/SKILL.md +266 -0
- core/skills/testing-strategy/assets/test-review-checklist.md +25 -0
- core/skills/testing-strategy/references/test-types.md +52 -0
- core/skills/testing-strategy/scripts/coverage_gate.py +79 -0
- core/skills/thinking_os/SKILL.md +288 -0
- core/skills/thinking_os/scripts/classify.sh +122 -0
- core/skills/typescript/SKILL.md +110 -0
- core/skills/typescript/assets/typescript-checklist.md +24 -0
- core/skills/typescript/references/strictness.md +53 -0
- core/skills/typescript/references/type-system.md +86 -0
- core/skills/typescript/scripts/check_tsconfig.py +92 -0
- core/skills/typescript/versions.json +9 -0
- core/subsystems.yaml +202 -0
- core/thinking_os/__init__.py +1 -0
- core/thinking_os/_agent_markers.py +32 -0
- core/thinking_os/agents/README.md +71 -0
- core/thinking_os/agents/analyst.md +139 -0
- core/thinking_os/agents/architect.md +127 -0
- core/thinking_os/agents/debugger.md +111 -0
- core/thinking_os/agents/deployer.md +112 -0
- core/thinking_os/agents/distiller.md +28 -0
- core/thinking_os/agents/documenter.md +101 -0
- core/thinking_os/agents/implementer.md +135 -0
- core/thinking_os/agents/internal/session_observer.md +39 -0
- core/thinking_os/agents/observer.md +100 -0
- core/thinking_os/agents/onboarder.md +81 -0
- core/thinking_os/agents/refactorer.md +123 -0
- core/thinking_os/agents/repairer.md +47 -0
- core/thinking_os/agents/researcher.md +129 -0
- core/thinking_os/agents/reviewer.md +147 -0
- core/thinking_os/agents/security_auditor.md +133 -0
- core/thinking_os/background.py +405 -0
- core/thinking_os/bootstrap_outcomes.py +200 -0
- core/thinking_os/budget.py +302 -0
- core/thinking_os/capture.py +495 -0
- core/thinking_os/cognition.py +516 -0
- core/thinking_os/cognition_schemas.py +517 -0
- core/thinking_os/compress.py +192 -0
- core/thinking_os/concepts.py +233 -0
- core/thinking_os/dashboard.py +159 -0
- core/thinking_os/database.py +2883 -0
- core/thinking_os/decay.py +393 -0
- core/thinking_os/digest.py +295 -0
- core/thinking_os/dispatcher.py +192 -0
- core/thinking_os/dispatcher_helpers.py +48 -0
- core/thinking_os/dispatchers/__init__.py +3 -0
- core/thinking_os/dispatchers/default.py +47 -0
- core/thinking_os/distill.py +192 -0
- core/thinking_os/doc_indexer.py +905 -0
- core/thinking_os/embeddings.py +943 -0
- core/thinking_os/formula_composer.py +556 -0
- core/thinking_os/gate_marker.py +75 -0
- core/thinking_os/graph.py +296 -0
- core/thinking_os/graph_indexer.py +360 -0
- core/thinking_os/health_check.py +517 -0
- core/thinking_os/impact.py +119 -0
- core/thinking_os/memory_gc.py +356 -0
- core/thinking_os/migrator_embeddings.py +318 -0
- core/thinking_os/precision.py +194 -0
- core/thinking_os/presets/registry.yaml +127 -0
- core/thinking_os/record_outcome.py +399 -0
- core/thinking_os/repair.py +105 -0
- core/thinking_os/retrieval_quality.py +239 -0
- core/thinking_os/roles/analyst.yaml +83 -0
- core/thinking_os/roles/architect.yaml +88 -0
- core/thinking_os/roles/debugger.yaml +71 -0
- core/thinking_os/roles/deployer.yaml +71 -0
- core/thinking_os/roles/documenter.yaml +72 -0
- core/thinking_os/roles/implementer.yaml +83 -0
- core/thinking_os/roles/observer.yaml +70 -0
- core/thinking_os/roles/refactorer.yaml +71 -0
- core/thinking_os/roles/researcher.yaml +72 -0
- core/thinking_os/roles/reviewer.yaml +79 -0
- core/thinking_os/roles/security_auditor.yaml +83 -0
- core/thinking_os/roles_state.py +168 -0
- core/thinking_os/sanitizer.py +320 -0
- core/thinking_os/server.py +3160 -0
- core/thinking_os/session_enrich.py +272 -0
- core/thinking_os/session_observe_worker.py +111 -0
- core/thinking_os/session_startup.py +74 -0
- core/thinking_os/session_summary.py +245 -0
- core/thinking_os/situations/registry.yaml +99 -0
- core/thinking_os/task_analyzer.py +462 -0
- core/thinking_os/task_parser.py +342 -0
- core/thinking_os/task_sync.py +73 -0
- core/thinking_os/tools/__init__.py +6 -0
- core/thinking_os/tools/_shared.py +947 -0
- core/thinking_os/tools/cognition.py +1867 -0
- core/thinking_os/tools/docs.py +770 -0
- core/thinking_os/tools/learning.py +2078 -0
- core/thinking_os/tools/logs.py +79 -0
- core/thinking_os/tools/memory.py +840 -0
- core/thinking_os/tools/metrics.py +200 -0
- core/thinking_os/tools/retrieve.py +415 -0
- core/thinking_os/tools/routing.py +658 -0
- core/thinking_os/tools/tasks.py +449 -0
- core/thinking_os/tools/trajectory.py +181 -0
- core/thinking_os/tracing.py +235 -0
- core/web/__init__.py +5 -0
- core/web/_cache.py +118 -0
- core/web/_deps.py +56 -0
- core/web/_envelope.py +85 -0
- core/web/_project_context.py +140 -0
- core/web/chat_providers.py +108 -0
- core/web/init_jobs.py +216 -0
- core/web/routes/__init__.py +25 -0
- core/web/routes/_bounded_read.py +76 -0
- core/web/routes/board.py +1089 -0
- core/web/routes/cognition.py +1838 -0
- core/web/routes/config.py +635 -0
- core/web/routes/graph.py +513 -0
- core/web/routes/health.py +180 -0
- core/web/routes/hooks.py +288 -0
- core/web/routes/hub.py +1219 -0
- core/web/routes/logs.py +374 -0
- core/web/routes/metrics.py +43 -0
- core/web/routes/observability.py +400 -0
- core/web/routes/patterns.py +227 -0
- core/web/routes/presence.py +609 -0
- core/web/routes/roles.py +446 -0
- core/web/routes/scheduled.py +261 -0
- core/web/routes/search.py +238 -0
- core/web/routes/sessions.py +220 -0
- core/web/routes/settings.py +363 -0
- core/web/routes/stream.py +547 -0
- core/web/security.py +157 -0
- core/web/server.py +283 -0
- graph_os/__init__.py +29 -0
- graph_os/backend.py +233 -0
- graph_os/backends/__init__.py +13 -0
- graph_os/backends/sqlite_backend.py +1053 -0
- graph_os/communities.py +410 -0
- graph_os/enterprise.py +218 -0
- graph_os/entry_points.py +226 -0
- graph_os/extractors/__init__.py +25 -0
- graph_os/extractors/code_generic.py +914 -0
- graph_os/extractors/code_go.py +1422 -0
- graph_os/extractors/code_json.py +340 -0
- graph_os/extractors/code_php.py +979 -0
- graph_os/extractors/code_python.py +1454 -0
- graph_os/extractors/code_shell.py +538 -0
- graph_os/extractors/code_toml.py +302 -0
- graph_os/extractors/code_ts.py +1665 -0
- graph_os/extractors/code_yaml.py +394 -0
- graph_os/extractors/contracts.py +1592 -0
- graph_os/extractors/md_links.py +890 -0
- graph_os/extractors/task_deps.py +345 -0
- graph_os/groups/__init__.py +22 -0
- graph_os/groups/cross_repo.py +156 -0
- graph_os/groups/manifest.py +141 -0
- graph_os/ingest/__init__.py +19 -0
- graph_os/ingest/base.py +306 -0
- graph_os/ingest/github.py +112 -0
- graph_os/ingest/zip.py +95 -0
- graph_os/toolchain.py +393 -0
- graph_os/tools/__init__.py +9 -0
- graph_os/tools/graph.py +5573 -0
- graph_os/tools/reindex_dispatch.py +730 -0
- graph_os/tree_sitter_overlay.py +235 -0
- graph_os/types.py +252 -0
- graph_os/vec_index.py +277 -0
- graph_os/viewer/__init__.py +12 -0
- graph_os/viewer/exporter.py +93 -0
- graph_os/viewer/template.py +189 -0
- scheduled/__init__.py +0 -0
- scheduled/_activity.py +126 -0
- scheduled/_state.py +113 -0
- scheduled/config.py +86 -0
- scheduled/dep_reconcile.py +135 -0
- scheduled/error_sweep.py +137 -0
- scheduled/nightly.py +930 -0
- scheduled/responsive_extract.py +65 -0
- scripts/__init__.py +4 -0
- scripts/_commit_msg_body.sh +31 -0
- scripts/_post_commit_body.sh +49 -0
- scripts/_pre_commit_body.sh +121 -0
- scripts/_prepare_commit_msg_body.sh +53 -0
- scripts/audit_mcp_tools.py +693 -0
- scripts/bench_sdk_dispatcher.py +177 -0
- scripts/capture_golden.py +169 -0
- scripts/check_graph_phantoms.py +75 -0
- scripts/dev/audit_doc_links.py +359 -0
- scripts/dev/audit_scaffold_module_tags.py +107 -0
- scripts/dev/backfill_doc_headers.py +328 -0
- scripts/dev/backfill_nav_lines.py +119 -0
- scripts/dev/fix_nav_placement.py +106 -0
- scripts/dev/inspect_sdk_options.py +45 -0
- scripts/dev/migrate_check_ids.py +170 -0
- scripts/dev/strip_purpose_blocks.py +154 -0
- scripts/dump_openapi.py +66 -0
- scripts/e2e_dispatch_tool.py +195 -0
- scripts/generate_manifest.py +166 -0
- scripts/golden_sections.py +20 -0
- scripts/graph_demo.py +161 -0
- scripts/install-git-hooks.sh +47 -0
- scripts/migrate_embeddings_minilm_to_bge_m3.py +84 -0
- scripts/operational_eval.py +445 -0
- scripts/probe_agent_session_resolver.py +59 -0
- scripts/prune_deleted_path.py +127 -0
- scripts/refactor_agent_dual_mode.py +171 -0
- scripts/refresh_skill_versions.py +302 -0
- scripts/regen_doc_index.py +209 -0
- scripts/regen_doctor_schema.py +62 -0
- scripts/regen_rules.py +94 -0
- scripts/rename_formulas_to_semantic.py +241 -0
- scripts/smoke_db_connections.py +183 -0
- scripts/smoke_doc_header.py +72 -0
- scripts/smoke_graph_e2e.py +374 -0
- scripts/smoke_sdk_dispatch.py +84 -0
- scripts/smoke_uid_resolver.py +164 -0
- scripts/verify_dispatchers.py +244 -0
- scripts/verify_phase_c_e2e.py +436 -0
- templates/__init__.py +6 -0
- templates/_base/Makefile.base +353 -0
- templates/_base/base.yaml +59 -0
- templates/_base/coding-os.yaml.template +39 -0
- templates/_base/dimension-registry.template.md +68 -0
- templates/_base/domain-config.template.json +46 -0
- templates/_base/fragments/anatomy-map.md.tmpl +11 -0
- templates/_base/fragments/context-discipline.md.tmpl +3 -0
- templates/_base/fragments/core-loop.md.tmpl +52 -0
- templates/_base/fragments/engineering-routing.md.tmpl +3 -0
- templates/_base/fragments/header.md.tmpl +6 -0
- templates/_base/fragments/identity.md.tmpl +3 -0
- templates/_base/fragments/principles.md.tmpl +3 -0
- templates/_base/fragments/retrieval-routing.md.tmpl +23 -0
- templates/_base/fragments/session-handoff.md.tmpl +3 -0
- templates/_base/fragments/skills.md.tmpl +3 -0
- templates/_base/fragments/ssot-map.md.tmpl +3 -0
- templates/_base/fragments/stop-conditions.md.tmpl +3 -0
- templates/_base/fragments/subagent-dispatch.md.tmpl +3 -0
- templates/_base/fragments/task-authoring.md.tmpl +69 -0
- templates/_base/fragments/task-logging.md.tmpl +8 -0
- templates/_base/fragments/tool-routing.md.tmpl +9 -0
- templates/_base/fragments/verification-matrix.md.tmpl +12 -0
- templates/_base/lang/dart/analysis_options.yaml +7 -0
- templates/_base/lang/php/phpcs.xml.dist +10 -0
- templates/_base/lang/python/pyproject.toml +19 -0
- templates/_base/lang/rust/clippy.toml +5 -0
- templates/_base/lang/rust/rustfmt.toml +3 -0
- templates/_base/lang/typescript/eslint.config.js +26 -0
- templates/_base/lang/typescript/tsconfig.json +15 -0
- templates/_base/lang/typescript/vitest.config.ts +10 -0
- templates/_base/scaffold/changes.log +1 -0
- templates/_base/scaffold/docs/00-index.md +55 -0
- templates/_base/scaffold/docs/_meta/feature-dependency-tree.md +30 -0
- templates/_base/scaffold/docs/_meta/foundation-map.md +56 -0
- templates/_base/scaffold/docs/_meta/questions.md +8 -0
- templates/_base/scaffold/docs/_meta/roadmap.md +33 -0
- templates/_base/scaffold/docs/api-contracts/00-index.md +58 -0
- templates/_base/scaffold/docs/api-contracts/error-format.md +58 -0
- templates/_base/scaffold/docs/architecture/00-index.md +42 -0
- templates/_base/scaffold/docs/architecture/adr/00-index.md +39 -0
- templates/_base/scaffold/docs/engineering/00-index.md +9 -0
- templates/_base/scaffold/docs/governance/00-index.md +55 -0
- templates/_base/scaffold/docs/governance/_templates/doc-cheat-sheet.md +202 -0
- templates/_base/scaffold/docs/governance/_templates/playbook-template.md +81 -0
- templates/_base/scaffold/docs/governance/_templates/post-mortem-template.md +85 -0
- templates/_base/scaffold/docs/governance/_templates/runbook-template.md +88 -0
- templates/_base/scaffold/docs/governance/_templates/security-review-template.md +111 -0
- templates/_base/scaffold/docs/governance/_templates/task-detail.md +61 -0
- templates/_base/scaffold/docs/governance/agent-workflow.md +101 -0
- templates/_base/scaffold/docs/governance/anatomy-contract.md +150 -0
- templates/_base/scaffold/docs/governance/critical-rules.md +224 -0
- templates/_base/scaffold/docs/governance/decision-records.md +58 -0
- templates/_base/scaffold/docs/governance/docs-first-protocol.md +157 -0
- templates/_base/scaffold/docs/governance/docs-system.md +151 -0
- templates/_base/scaffold/docs/governance/gdpr-compliance.md +66 -0
- templates/_base/scaffold/docs/governance/mcp-tool-inventory.md +112 -0
- templates/_base/scaffold/docs/governance/risk-register.md +26 -0
- templates/_base/scaffold/docs/governance/scaffold-boundary-contract.md +161 -0
- templates/_base/scaffold/docs/governance/task-lifecycle.md +125 -0
- templates/_base/scaffold/docs/governance/wrapper-derivation.md +50 -0
- templates/_base/scaffold/docs/insights/00-index.md +17 -0
- templates/_base/scaffold/docs/ops/00-index.md +59 -0
- templates/_base/scaffold/docs/ops/runbooks/00-index.md +9 -0
- templates/_base/scaffold/docs/playbooks/00-index.md +12 -0
- templates/_base/scaffold/docs/playbooks/research-validation.md +29 -0
- templates/_base/scaffold/docs/playbooks/security-review.md +41 -0
- templates/_base/scaffold/docs/prd/00-index.md +43 -0
- templates/_base/scaffold/docs/prd/01-snapshot-vision.md +56 -0
- templates/_base/scaffold/docs/workflow/workflow-guide.md +138 -0
- templates/_base/scaffold/src/shared/README.md +23 -0
- templates/_base/skill-enforcement.template.md +14 -0
- templates/_base/task-detail.template.md +61 -0
- templates/_presets/ai-saas.yaml +9 -0
- templates/_presets/django-next.yaml +8 -0
- templates/_presets/dotnet-react.yaml +8 -0
- templates/_presets/flutter-baas.yaml +8 -0
- templates/_presets/go-react.yaml +8 -0
- templates/_presets/hexagonal-product.yaml +16 -0
- templates/_presets/jamstack.yaml +8 -0
- templates/_presets/laravel-vue.yaml +8 -0
- templates/_presets/mean.yaml +8 -0
- templates/_presets/mern.yaml +9 -0
- templates/_presets/nest-angular.yaml +8 -0
- templates/_presets/nextjs-fastapi.yaml +10 -0
- templates/_presets/nuxt-fullstack.yaml +9 -0
- templates/_presets/pern.yaml +9 -0
- templates/_presets/rails-react.yaml +8 -0
- templates/_presets/rn-api.yaml +8 -0
- templates/_presets/rust-svelte.yaml +8 -0
- templates/_presets/spring-react.yaml +8 -0
- templates/_presets/t3-style.yaml +9 -0
- templates/_presets/tall.yaml +8 -0
- templates/_presets/wordpress-cms.yaml +8 -0
- templates/angular/rules/frontend.md +19 -0
- templates/angular/scaffold/docs/engineering/accessibility.md +46 -0
- templates/angular/scaffold/docs/engineering/angular-rules.md +35 -0
- templates/angular/scaffold/docs/playbooks/angular-app.md +42 -0
- templates/angular/scaffold/src/frontend/angular.json +52 -0
- templates/angular/scaffold/src/frontend/package.json +28 -0
- templates/angular/scaffold/src/frontend/src/app/app.component.ts +19 -0
- templates/angular/scaffold/src/frontend/src/app/app.config.ts +22 -0
- templates/angular/scaffold/src/frontend/src/app/app.routes.ts +8 -0
- templates/angular/scaffold/src/frontend/src/app/core/global-error-handler.ts +12 -0
- templates/angular/scaffold/src/frontend/src/app/health/health.component.ts +14 -0
- templates/angular/scaffold/src/frontend/src/app/health/health.service.spec.ts +16 -0
- templates/angular/scaffold/src/frontend/src/app/health/health.service.ts +10 -0
- templates/angular/scaffold/src/frontend/src/index.html +11 -0
- templates/angular/scaffold/src/frontend/src/main.ts +9 -0
- templates/angular/scaffold/src/frontend/src/styles.css +14 -0
- templates/angular/scaffold/src/frontend/tsconfig.app.json +8 -0
- templates/angular/scaffold/src/frontend/tsconfig.json +27 -0
- templates/angular/scaffold/src/frontend/tsconfig.spec.json +8 -0
- templates/angular/scaffold-boundary.yaml +27 -0
- templates/angular/skills/angular/SKILL.md +79 -0
- templates/angular/skills/angular/references/anatomy.md +69 -0
- templates/angular/stack.yaml +75 -0
- templates/aspnet-core/rules/backend.md +20 -0
- templates/aspnet-core/scaffold/docs/engineering/aspnet-core-rules.md +36 -0
- templates/aspnet-core/scaffold/docs/playbooks/aspnet-core-service.md +40 -0
- templates/aspnet-core/scaffold/src/backend/Backend.csproj +11 -0
- templates/aspnet-core/scaffold/src/backend/Backend.sln +27 -0
- templates/aspnet-core/scaffold/src/backend/Common/ExceptionHandlingMiddleware.cs +35 -0
- templates/aspnet-core/scaffold/src/backend/Features/Health/HealthEndpoints.cs +10 -0
- templates/aspnet-core/scaffold/src/backend/Features/Health/HealthService.cs +9 -0
- templates/aspnet-core/scaffold/src/backend/Program.cs +22 -0
- templates/aspnet-core/scaffold/src/backend/tests/Backend.Tests/Backend.Tests.csproj +22 -0
- templates/aspnet-core/scaffold/src/backend/tests/Backend.Tests/HealthServiceTests.cs +15 -0
- templates/aspnet-core/scaffold-boundary.yaml +24 -0
- templates/aspnet-core/skills/aspnet-core/SKILL.md +80 -0
- templates/aspnet-core/skills/aspnet-core/references/anatomy.md +65 -0
- templates/aspnet-core/stack.yaml +68 -0
- templates/astro/rules/frontend.md +20 -0
- templates/astro/scaffold/docs/engineering/astro-rules.md +40 -0
- templates/astro/scaffold/docs/playbooks/astro-app.md +57 -0
- templates/astro/scaffold/docs/playbooks/content-seo.md +37 -0
- templates/astro/scaffold/src/frontend/astro.config.mjs +10 -0
- templates/astro/scaffold/src/frontend/package.json +23 -0
- templates/astro/scaffold/src/frontend/src/components/Greeting.astro +13 -0
- templates/astro/scaffold/src/frontend/src/content/posts/hello.md +10 -0
- templates/astro/scaffold/src/frontend/src/content.config.ts +19 -0
- templates/astro/scaffold/src/frontend/src/lib/problem.test.ts +39 -0
- templates/astro/scaffold/src/frontend/src/lib/problem.ts +30 -0
- templates/astro/scaffold/src/frontend/src/pages/api/health.ts +13 -0
- templates/astro/scaffold/src/frontend/src/pages/index.astro +21 -0
- templates/astro/scaffold/src/frontend/tsconfig.json +9 -0
- templates/astro/scaffold/src/frontend/vitest.config.ts +10 -0
- templates/astro/scaffold-boundary.yaml +28 -0
- templates/astro/skills/astro/SKILL.md +71 -0
- templates/astro/skills/astro/references/anatomy.md +66 -0
- templates/astro/stack.yaml +75 -0
- templates/csharp-plain/scaffold/src/backend/Backend.csproj +12 -0
- templates/csharp-plain/scaffold/src/backend/Program.cs +1 -0
- templates/csharp-plain/scaffold-boundary.yaml +23 -0
- templates/csharp-plain/stack.yaml +50 -0
- templates/django/rules/backend.md +18 -0
- templates/django/scaffold/docs/engineering/anti-ambiguity.md +74 -0
- templates/django/scaffold/docs/engineering/backend-rules.md +133 -0
- templates/django/scaffold/docs/engineering/glossary.md +51 -0
- templates/django/scaffold/docs/engineering/logging-standards.md +107 -0
- templates/django/scaffold/docs/engineering/naming-conventions.md +68 -0
- templates/django/scaffold/docs/engineering/secrets-rotation-runbook.md +142 -0
- templates/django/scaffold/docs/playbooks/backend-api.md +119 -0
- templates/django/scaffold/src/backend/config/__init__.py +0 -0
- templates/django/scaffold/src/backend/config/settings.py +31 -0
- templates/django/scaffold/src/backend/config/urls.py +11 -0
- templates/django/scaffold/src/backend/config/wsgi.py +6 -0
- templates/django/scaffold/src/backend/manage.py +14 -0
- templates/django/scaffold/src/backend/pyproject.toml +37 -0
- templates/django/scaffold/src/backend/tests/test_health.py +4 -0
- templates/django/scaffold-boundary.yaml +25 -0
- templates/django/skills/python-django/SKILL.md +450 -0
- templates/django/skills/python-django/references/anatomy.md +117 -0
- templates/django/skills/python-django/scripts/new_endpoint.py +89 -0
- templates/django/stack.yaml +73 -0
- templates/fastapi/rules/backend.md +18 -0
- templates/fastapi/scaffold/docs/engineering/fastapi-rules.md +37 -0
- templates/fastapi/scaffold/docs/playbooks/fastapi-service.md +30 -0
- templates/fastapi/scaffold/src/backend/app/__init__.py +0 -0
- templates/fastapi/scaffold/src/backend/app/main.py +8 -0
- templates/fastapi/scaffold/src/backend/pyproject.toml +39 -0
- templates/fastapi/scaffold/src/backend/tests/test_health.py +11 -0
- templates/fastapi/scaffold-boundary.yaml +25 -0
- templates/fastapi/skills/python-fastapi/SKILL.md +75 -0
- templates/fastapi/skills/python-fastapi/references/anatomy.md +117 -0
- templates/fastapi/skills/python-fastapi/scripts/new_endpoint.py +101 -0
- templates/fastapi/stack.yaml +57 -0
- templates/flutter/rules/mobile.md +26 -0
- templates/flutter/scaffold/docs/engineering/flutter-rules.md +35 -0
- templates/flutter/scaffold/docs/playbooks/flutter-app.md +45 -0
- templates/flutter/scaffold/src/mobile/lib/core/error_mapper.dart +17 -0
- templates/flutter/scaffold/src/mobile/lib/core/router.dart +13 -0
- templates/flutter/scaffold/src/mobile/lib/main.dart +22 -0
- templates/flutter/scaffold/src/mobile/lib/screens/health_screen.dart +32 -0
- templates/flutter/scaffold/src/mobile/lib/services/health_service.dart +11 -0
- templates/flutter/scaffold/src/mobile/lib/state/health_provider.dart +13 -0
- templates/flutter/scaffold/src/mobile/pubspec.yaml +22 -0
- templates/flutter/scaffold/src/mobile/test/health_provider_test.dart +90 -0
- templates/flutter/scaffold-boundary.yaml +28 -0
- templates/flutter/skills/flutter/SKILL.md +76 -0
- templates/flutter/skills/flutter/references/anatomy.md +64 -0
- templates/flutter/stack.yaml +70 -0
- templates/go/rules/backend.md +19 -0
- templates/go/scaffold/docs/engineering/go-rules.md +45 -0
- templates/go/scaffold/docs/playbooks/go-service.md +30 -0
- templates/go/scaffold/src/backend/cmd/api/main.go +22 -0
- templates/go/scaffold/src/backend/cmd/api/main_test.go +20 -0
- templates/go/scaffold/src/backend/go.mod +3 -0
- templates/go/scaffold-boundary.yaml +25 -0
- templates/go/skills/go-patterns/SKILL.md +68 -0
- templates/go/skills/go-patterns/assets/go-checklist.md +29 -0
- templates/go/skills/go-patterns/references/anatomy.md +115 -0
- templates/go/skills/go-patterns/references/go-2026-idioms.md +92 -0
- templates/go/skills/go-patterns/scripts/new_endpoint.py +117 -0
- templates/go/skills/go-patterns/versions.json +16 -0
- templates/go/stack.yaml +54 -0
- templates/go-fiber/rules/backend.md +20 -0
- templates/go-fiber/scaffold/docs/engineering/fiber-rules.md +97 -0
- templates/go-fiber/scaffold/docs/playbooks/fiber-service.md +149 -0
- templates/go-fiber/scaffold/src/backend/cmd/api/main.go +21 -0
- templates/go-fiber/scaffold/src/backend/cmd/api/main_test.go +17 -0
- templates/go-fiber/scaffold/src/backend/go.mod +23 -0
- templates/go-fiber/scaffold/src/backend/go.sum +49 -0
- templates/go-fiber/scaffold-boundary.yaml +26 -0
- templates/go-fiber/skills/go-fiber/SKILL.md +203 -0
- templates/go-fiber/skills/go-fiber/assets/fiber-checklist.md +26 -0
- templates/go-fiber/skills/go-fiber/references/anatomy.md +116 -0
- templates/go-fiber/skills/go-fiber/references/fiber-v3-patterns.md +89 -0
- templates/go-fiber/skills/go-fiber/scripts/new_endpoint.py +107 -0
- templates/go-fiber/skills/go-fiber/versions.json +16 -0
- templates/go-fiber/stack.yaml +59 -0
- templates/go-plain/scaffold/src/backend/go.mod +3 -0
- templates/go-plain/scaffold/src/backend/main.go +7 -0
- templates/go-plain/scaffold-boundary.yaml +22 -0
- templates/go-plain/stack.yaml +51 -0
- templates/java-plain/scaffold/src/backend/mvnw +302 -0
- templates/java-plain/scaffold/src/backend/pom.xml +41 -0
- templates/java-plain/scaffold/src/backend/src/main/java/com/example/app/Main.java +10 -0
- templates/java-plain/scaffold-boundary.yaml +23 -0
- templates/java-plain/stack.yaml +51 -0
- templates/laravel/rules/backend.md +20 -0
- templates/laravel/scaffold/docs/engineering/laravel-rules.md +28 -0
- templates/laravel/scaffold/docs/playbooks/laravel-service.md +28 -0
- templates/laravel/scaffold/src/backend/app/Exceptions/Handler.php +27 -0
- templates/laravel/scaffold/src/backend/app/Http/Controllers/HealthController.php +15 -0
- templates/laravel/scaffold/src/backend/app/Support/HealthStatus.php +14 -0
- templates/laravel/scaffold/src/backend/composer.json +24 -0
- templates/laravel/scaffold/src/backend/phpunit.xml +10 -0
- templates/laravel/scaffold/src/backend/public/index.php +8 -0
- templates/laravel/scaffold/src/backend/routes/api.php +7 -0
- templates/laravel/scaffold/src/backend/tests/Unit/HealthStatusTest.php +16 -0
- templates/laravel/scaffold-boundary.yaml +23 -0
- templates/laravel/skills/laravel/SKILL.md +56 -0
- templates/laravel/skills/laravel/references/anatomy.md +65 -0
- templates/laravel/stack.yaml +66 -0
- templates/meta/rules/graph-first.md +27 -0
- templates/meta/rules/hook-author.md +19 -0
- templates/meta/rules/mcp-tool-author.md +18 -0
- templates/meta/rules/meta-engineering.md +17 -0
- templates/meta/scaffold-boundary.yaml +55 -0
- templates/meta/skills/claude-sdk-integration/SKILL.md +163 -0
- templates/meta/skills/claude-sdk-integration/assets/sdk-checklist.md +27 -0
- templates/meta/skills/claude-sdk-integration/scripts/check_model_ids.py +97 -0
- templates/meta/skills/graph-os-authoring/SKILL.md +278 -0
- templates/meta/skills/graph-os-authoring/assets/graph-os-checklist.md +25 -0
- templates/meta/skills/graph-os-authoring/scripts/new_extractor.py +76 -0
- templates/meta/skills/hook-authoring/SKILL.md +292 -0
- templates/meta/skills/hook-authoring/assets/hook-checklist.md +30 -0
- templates/meta/skills/hook-authoring/scripts/new_hook.sh +75 -0
- templates/meta/skills/mcp-tool-authoring/SKILL.md +301 -0
- templates/meta/skills/mcp-tool-authoring/assets/mcp-tool-checklist.md +29 -0
- templates/meta/skills/mcp-tool-authoring/scripts/new_tool.py +74 -0
- templates/meta/skills/meta-engineering/SKILL.md +151 -0
- templates/meta/skills/meta-engineering/assets/meta-edit-checklist.md +28 -0
- templates/meta/skills/meta-engineering/scripts/which_layer.py +61 -0
- templates/meta/skills/python-meta-server/SKILL.md +162 -0
- templates/meta/skills/python-meta-server/assets/meta-server-checklist.md +28 -0
- templates/meta/skills/python-meta-server/scripts/check_envelope.py +91 -0
- templates/meta/skills/react-vite-hub/SKILL.md +140 -0
- templates/meta/skills/react-vite-hub/assets/hub-ui-checklist.md +23 -0
- templates/meta/skills/react-vite-hub/scripts/check_vite_env.py +73 -0
- templates/meta/stack.yaml +119 -0
- templates/nestjs/rules/backend.md +20 -0
- templates/nestjs/scaffold/docs/engineering/nestjs-rules.md +33 -0
- templates/nestjs/scaffold/docs/playbooks/nestjs-service.md +39 -0
- templates/nestjs/scaffold/src/backend/nest-cli.json +5 -0
- templates/nestjs/scaffold/src/backend/package.json +28 -0
- templates/nestjs/scaffold/src/backend/src/app.module.ts +9 -0
- templates/nestjs/scaffold/src/backend/src/common/all-exceptions.filter.ts +59 -0
- templates/nestjs/scaffold/src/backend/src/health/health.controller.ts +14 -0
- templates/nestjs/scaffold/src/backend/src/health/health.module.ts +10 -0
- templates/nestjs/scaffold/src/backend/src/health/health.service.spec.ts +21 -0
- templates/nestjs/scaffold/src/backend/src/health/health.service.ts +9 -0
- templates/nestjs/scaffold/src/backend/src/main.ts +26 -0
- templates/nestjs/scaffold/src/backend/tsconfig.json +16 -0
- templates/nestjs/scaffold/src/backend/vitest.config.ts +9 -0
- templates/nestjs/scaffold-boundary.yaml +25 -0
- templates/nestjs/skills/nestjs/SKILL.md +67 -0
- templates/nestjs/skills/nestjs/references/anatomy.md +65 -0
- templates/nestjs/stack.yaml +68 -0
- templates/nextjs/rules/frontend.md +18 -0
- templates/nextjs/scaffold/docs/design/00-index.md +23 -0
- templates/nextjs/scaffold/docs/design/colors-tokens.md +141 -0
- templates/nextjs/scaffold/docs/design/components-patterns.md +159 -0
- templates/nextjs/scaffold/docs/design/motion-accessibility.md +137 -0
- templates/nextjs/scaffold/docs/design/typography-spacing.md +107 -0
- templates/nextjs/scaffold/docs/engineering/accessibility-web.md +56 -0
- templates/nextjs/scaffold/docs/engineering/copywriting-standard.md +102 -0
- templates/nextjs/scaffold/docs/engineering/formatting-rules.md +89 -0
- templates/nextjs/scaffold/docs/engineering/frontend-rendering-rules.md +80 -0
- templates/nextjs/scaffold/docs/engineering/frontend-rules.md +183 -0
- templates/nextjs/scaffold/docs/engineering/i18n-policy.md +99 -0
- templates/nextjs/scaffold/docs/pages-content-spec/00-index.md +78 -0
- templates/nextjs/scaffold/docs/playbooks/content-seo.md +55 -0
- templates/nextjs/scaffold/docs/playbooks/docs-governance.md +51 -0
- templates/nextjs/scaffold/docs/playbooks/frontend-ui.md +63 -0
- templates/nextjs/scaffold/src/frontend/app/layout.tsx +14 -0
- templates/nextjs/scaffold/src/frontend/app/page.tsx +3 -0
- templates/nextjs/scaffold/src/frontend/eslint.config.js +17 -0
- templates/nextjs/scaffold/src/frontend/lib/greeting.test.ts +9 -0
- templates/nextjs/scaffold/src/frontend/lib/greeting.ts +3 -0
- templates/nextjs/scaffold/src/frontend/package.json +28 -0
- templates/nextjs/scaffold/src/frontend/tsconfig.json +18 -0
- templates/nextjs/scaffold/src/frontend/vitest.config.ts +10 -0
- templates/nextjs/scaffold-boundary.yaml +30 -0
- templates/nextjs/skills/nextjs-react/SKILL.md +485 -0
- templates/nextjs/skills/nextjs-react/references/anatomy.md +116 -0
- templates/nextjs/skills/nextjs-react/scripts/new_component.py +72 -0
- templates/nextjs/stack.yaml +81 -0
- templates/node-express/rules/backend.md +20 -0
- templates/node-express/scaffold/docs/engineering/express-rules.md +30 -0
- templates/node-express/scaffold/docs/playbooks/express-service.md +35 -0
- templates/node-express/scaffold/src/backend/package.json +24 -0
- templates/node-express/scaffold/src/backend/src/index.ts +17 -0
- templates/node-express/scaffold/src/backend/src/middleware/error-handler.ts +12 -0
- templates/node-express/scaffold/src/backend/src/routes/health.test.ts +33 -0
- templates/node-express/scaffold/src/backend/src/routes/health.ts +7 -0
- templates/node-express/scaffold/src/backend/tsconfig.json +15 -0
- templates/node-express/scaffold/src/backend/types/express-bootstrap.d.ts +21 -0
- templates/node-express/scaffold-boundary.yaml +25 -0
- templates/node-express/skills/node-express/SKILL.md +70 -0
- templates/node-express/skills/node-express/references/anatomy.md +63 -0
- templates/node-express/stack.yaml +63 -0
- templates/python/scaffold/docs/engineering/python-rules.md +27 -0
- templates/python/scaffold/docs/playbooks/python-library.md +35 -0
- templates/python/stack.yaml +60 -0
- templates/rails/rules/backend.md +10 -0
- templates/rails/scaffold/docs/engineering/rails-rules.md +33 -0
- templates/rails/scaffold/docs/playbooks/rails-service.md +42 -0
- templates/rails/scaffold/src/backend/Gemfile +12 -0
- templates/rails/scaffold/src/backend/app/controllers/application_controller.rb +26 -0
- templates/rails/scaffold/src/backend/app/controllers/health_controller.rb +6 -0
- templates/rails/scaffold/src/backend/app/models/health.rb +6 -0
- templates/rails/scaffold/src/backend/config/application.rb +12 -0
- templates/rails/scaffold/src/backend/config/boot.rb +3 -0
- templates/rails/scaffold/src/backend/config/routes.rb +4 -0
- templates/rails/scaffold/src/backend/config.ru +5 -0
- templates/rails/scaffold/src/backend/spec/rails_helper.rb +18 -0
- templates/rails/scaffold/src/backend/spec/requests/health_spec.rb +24 -0
- templates/rails/scaffold-boundary.yaml +25 -0
- templates/rails/skills/rails/SKILL.md +62 -0
- templates/rails/skills/rails/references/anatomy.md +71 -0
- templates/rails/stack.yaml +72 -0
- templates/react-native/rules/mobile.md +26 -0
- templates/react-native/scaffold/docs/engineering/accessibility-mobile.md +95 -0
- templates/react-native/scaffold/docs/engineering/mobile-rules.md +56 -0
- templates/react-native/scaffold/docs/engineering/offline-first.md +61 -0
- templates/react-native/scaffold/docs/playbooks/mobile-app.md +49 -0
- templates/react-native/scaffold/src/mobile/App.tsx +9 -0
- templates/react-native/scaffold/src/mobile/eslint.config.js +17 -0
- templates/react-native/scaffold/src/mobile/package.json +23 -0
- templates/react-native/scaffold/src/mobile/src/greeting.test.ts +9 -0
- templates/react-native/scaffold/src/mobile/src/greeting.ts +3 -0
- templates/react-native/scaffold/src/mobile/tsconfig.json +17 -0
- templates/react-native/scaffold/src/mobile/vitest.config.ts +10 -0
- templates/react-native/scaffold-boundary.yaml +30 -0
- templates/react-native/skills/react-native-mobile/SKILL.md +119 -0
- templates/react-native/skills/react-native-mobile/assets/rn-mobile-checklist.md +28 -0
- templates/react-native/skills/react-native-mobile/references/anatomy.md +140 -0
- templates/react-native/skills/react-native-mobile/references/rn-2026-practices.md +54 -0
- templates/react-native/skills/react-native-mobile/scripts/new_screen.py +73 -0
- templates/react-native/skills/react-native-mobile/versions.json +16 -0
- templates/react-native/skills/react-native-patterns/SKILL.md +512 -0
- templates/react-native/skills/react-native-patterns/assets/rn-review-checklist.md +26 -0
- templates/react-native/skills/react-native-patterns/references/anatomy.md +62 -0
- templates/react-native/skills/react-native-patterns/references/list-performance.md +70 -0
- templates/react-native/skills/react-native-patterns/scripts/scan_rn_perf.py +77 -0
- templates/react-native/stack.yaml +70 -0
- templates/ruby-plain/scaffold/src/backend/Gemfile +8 -0
- templates/ruby-plain/scaffold/src/backend/main.rb +3 -0
- templates/ruby-plain/scaffold-boundary.yaml +23 -0
- templates/ruby-plain/stack.yaml +50 -0
- templates/rust-axum/rules/backend.md +20 -0
- templates/rust-axum/scaffold/docs/engineering/rust-axum-rules.md +35 -0
- templates/rust-axum/scaffold/docs/playbooks/rust-axum-service.md +43 -0
- templates/rust-axum/scaffold/src/backend/Cargo.toml +20 -0
- templates/rust-axum/scaffold/src/backend/src/app.rs +12 -0
- templates/rust-axum/scaffold/src/backend/src/error.rs +48 -0
- templates/rust-axum/scaffold/src/backend/src/main.rs +24 -0
- templates/rust-axum/scaffold/src/backend/src/routes/health.rs +37 -0
- templates/rust-axum/scaffold/src/backend/src/routes/mod.rs +2 -0
- templates/rust-axum/scaffold-boundary.yaml +25 -0
- templates/rust-axum/skills/rust/SKILL.md +73 -0
- templates/rust-axum/skills/rust/references/anatomy.md +63 -0
- templates/rust-axum/stack.yaml +65 -0
- templates/rust-plain/scaffold/src/backend/Cargo.toml +6 -0
- templates/rust-plain/scaffold/src/backend/src/main.rs +3 -0
- templates/rust-plain/scaffold-boundary.yaml +23 -0
- templates/rust-plain/stack.yaml +51 -0
- templates/spring-boot/rules/backend.md +20 -0
- templates/spring-boot/scaffold/docs/engineering/spring-boot-rules.md +35 -0
- templates/spring-boot/scaffold/docs/playbooks/spring-boot-service.md +45 -0
- templates/spring-boot/scaffold/src/backend/mvnw +302 -0
- templates/spring-boot/scaffold/src/backend/pom.xml +69 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/Application.java +16 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/common/GlobalExceptionHandler.java +31 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/health/HealthController.java +22 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/health/HealthService.java +12 -0
- templates/spring-boot/scaffold/src/backend/src/main/java/com/example/app/health/HealthStatus.java +4 -0
- templates/spring-boot/scaffold/src/backend/src/test/java/com/example/app/health/HealthServiceTest.java +15 -0
- templates/spring-boot/scaffold-boundary.yaml +26 -0
- templates/spring-boot/skills/spring-boot/SKILL.md +84 -0
- templates/spring-boot/skills/spring-boot/references/anatomy.md +63 -0
- templates/spring-boot/stack.yaml +65 -0
- templates/svelte-sveltekit/rules/frontend.md +20 -0
- templates/svelte-sveltekit/scaffold/docs/engineering/svelte-sveltekit-rules.md +37 -0
- templates/svelte-sveltekit/scaffold/docs/playbooks/svelte-sveltekit-app.md +36 -0
- templates/svelte-sveltekit/scaffold/src/frontend/package.json +22 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/app.html +12 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/hooks.server.ts +14 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/lib/components/Greeting.svelte +6 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/lib/stores/count.test.ts +26 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/lib/stores/count.ts +4 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/+layout.svelte +24 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/+page.svelte +9 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/+page.ts +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/src/routes/health/+server.ts +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/svelte.config.js +10 -0
- templates/svelte-sveltekit/scaffold/src/frontend/tsconfig.json +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/vite.config.ts +7 -0
- templates/svelte-sveltekit/scaffold/src/frontend/vitest.config.ts +11 -0
- templates/svelte-sveltekit/scaffold-boundary.yaml +29 -0
- templates/svelte-sveltekit/skills/svelte/SKILL.md +90 -0
- templates/svelte-sveltekit/skills/svelte/references/anatomy.md +62 -0
- templates/svelte-sveltekit/stack.yaml +70 -0
- templates/typescript-plain/scaffold/src/index.ts +3 -0
- templates/typescript-plain/scaffold/tsconfig.json +13 -0
- templates/typescript-plain/scaffold-boundary.yaml +22 -0
- templates/typescript-plain/stack.yaml +44 -0
- templates/vue-nuxt/rules/frontend.md +19 -0
- templates/vue-nuxt/scaffold/docs/engineering/nuxt-rules.md +30 -0
- templates/vue-nuxt/scaffold/docs/playbooks/nuxt-app.md +29 -0
- templates/vue-nuxt/scaffold/src/frontend/app.vue +3 -0
- templates/vue-nuxt/scaffold/src/frontend/nuxt.config.ts +11 -0
- templates/vue-nuxt/scaffold/src/frontend/package.json +20 -0
- templates/vue-nuxt/scaffold/src/frontend/pages/index.test.ts +19 -0
- templates/vue-nuxt/scaffold/src/frontend/pages/index.vue +11 -0
- templates/vue-nuxt/scaffold/src/frontend/vitest.config.ts +12 -0
- templates/vue-nuxt/scaffold-boundary.yaml +26 -0
- templates/vue-nuxt/skills/vue-nuxt/SKILL.md +57 -0
- templates/vue-nuxt/skills/vue-nuxt/references/anatomy.md +60 -0
- templates/vue-nuxt/stack.yaml +61 -0
- templates/wordpress/rules/backend.md +19 -0
- templates/wordpress/scaffold/docs/engineering/wordpress-rules.md +28 -0
- templates/wordpress/scaffold/docs/playbooks/wordpress-service.md +29 -0
- templates/wordpress/scaffold/src/backend/composer.json +17 -0
- templates/wordpress/scaffold/src/backend/phpcs.xml.dist +11 -0
- templates/wordpress/scaffold/src/backend/phpunit.xml +10 -0
- templates/wordpress/scaffold/src/backend/plugin/inc/health.php +8 -0
- templates/wordpress/scaffold/src/backend/plugin/plugin.php +28 -0
- templates/wordpress/scaffold/src/backend/tests/HealthStatusTest.php +15 -0
- templates/wordpress/scaffold/src/backend/theme/functions.php +18 -0
- templates/wordpress/scaffold/src/backend/theme/style.css +11 -0
- templates/wordpress/scaffold-boundary.yaml +23 -0
- templates/wordpress/skills/wordpress/SKILL.md +110 -0
- templates/wordpress/skills/wordpress/assets/wp-checklist.md +28 -0
- templates/wordpress/skills/wordpress/references/wp-development.md +75 -0
- templates/wordpress/skills/wordpress/references/wp-security.md +68 -0
- templates/wordpress/skills/wordpress/scripts/scan_wp_smells.py +91 -0
- templates/wordpress/skills/wordpress/versions.json +16 -0
- templates/wordpress/stack.yaml +60 -0
- thinking_os/__init__.py +1 -0
- thinking_os/_agent_markers.py +32 -0
- thinking_os/background.py +405 -0
- thinking_os/bootstrap_outcomes.py +200 -0
- thinking_os/budget.py +302 -0
- thinking_os/capture.py +495 -0
- thinking_os/cognition.py +516 -0
- thinking_os/cognition_schemas.py +517 -0
- thinking_os/compress.py +192 -0
- thinking_os/concepts.py +233 -0
- thinking_os/dashboard.py +159 -0
- thinking_os/database.py +2883 -0
- thinking_os/decay.py +393 -0
- thinking_os/digest.py +295 -0
- thinking_os/dispatcher.py +192 -0
- thinking_os/dispatcher_helpers.py +48 -0
- thinking_os/dispatchers/__init__.py +3 -0
- thinking_os/dispatchers/default.py +47 -0
- thinking_os/distill.py +192 -0
- thinking_os/doc_indexer.py +905 -0
- thinking_os/embeddings.py +943 -0
- thinking_os/formula_composer.py +556 -0
- thinking_os/gate_marker.py +75 -0
- thinking_os/graph.py +296 -0
- thinking_os/graph_indexer.py +360 -0
- thinking_os/health_check.py +517 -0
- thinking_os/impact.py +119 -0
- thinking_os/memory_gc.py +356 -0
- thinking_os/migrator_embeddings.py +318 -0
- thinking_os/precision.py +194 -0
- thinking_os/record_outcome.py +399 -0
- thinking_os/repair.py +105 -0
- thinking_os/retrieval_quality.py +239 -0
- thinking_os/roles_state.py +168 -0
- thinking_os/sanitizer.py +320 -0
- thinking_os/server.py +3160 -0
- thinking_os/session_enrich.py +272 -0
- thinking_os/session_observe_worker.py +111 -0
- thinking_os/session_startup.py +74 -0
- thinking_os/session_summary.py +245 -0
- thinking_os/task_analyzer.py +462 -0
- thinking_os/task_parser.py +342 -0
- thinking_os/task_sync.py +73 -0
- thinking_os/tools/__init__.py +6 -0
- thinking_os/tools/_shared.py +947 -0
- thinking_os/tools/cognition.py +1867 -0
- thinking_os/tools/docs.py +770 -0
- thinking_os/tools/learning.py +2078 -0
- thinking_os/tools/logs.py +79 -0
- thinking_os/tools/memory.py +840 -0
- thinking_os/tools/metrics.py +200 -0
- thinking_os/tools/retrieve.py +415 -0
- thinking_os/tools/routing.py +658 -0
- thinking_os/tools/tasks.py +449 -0
- thinking_os/tools/trajectory.py +181 -0
- thinking_os/tracing.py +235 -0
- web/__init__.py +5 -0
- web/_cache.py +118 -0
- web/_deps.py +56 -0
- web/_envelope.py +85 -0
- web/_project_context.py +140 -0
- web/chat_providers.py +108 -0
- web/init_jobs.py +216 -0
- web/routes/__init__.py +25 -0
- web/routes/_bounded_read.py +76 -0
- web/routes/board.py +1089 -0
- web/routes/cognition.py +1838 -0
- web/routes/config.py +635 -0
- web/routes/graph.py +513 -0
- web/routes/health.py +180 -0
- web/routes/hooks.py +288 -0
- web/routes/hub.py +1219 -0
- web/routes/logs.py +374 -0
- web/routes/metrics.py +43 -0
- web/routes/observability.py +400 -0
- web/routes/patterns.py +227 -0
- web/routes/presence.py +609 -0
- web/routes/roles.py +446 -0
- web/routes/scheduled.py +261 -0
- web/routes/search.py +238 -0
- web/routes/sessions.py +220 -0
- web/routes/settings.py +363 -0
- web/routes/stream.py +547 -0
- web/security.py +157 -0
- web/server.py +283 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<!-- domain:FRONTEND | layer:reference | ssot:true | updated:2026-06-04 -->
|
|
2
|
+
# TypeScript Type System — Narrowing, Unions, Generics
|
|
3
|
+
|
|
4
|
+
> P: The type-level moves that make illegal states unrepresentable and bugs compile errors.
|
|
5
|
+
> R: Modeling a domain, narrowing a value, or writing a reusable generic.
|
|
6
|
+
> S: tsconfig flags — see [strictness.md](strictness.md).
|
|
7
|
+
> N: [SKILL.md](../SKILL.md), [typescript-checklist.md](../assets/typescript-checklist.md)
|
|
8
|
+
|
|
9
|
+
> Nav: [Skill](../SKILL.md)
|
|
10
|
+
|
|
11
|
+
## Narrowing — let control flow refine the type
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
function len(x: string | string[]): number {
|
|
15
|
+
if (typeof x === "string") return x.length; // x: string here
|
|
16
|
+
return x.length; // x: string[] here
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The compiler narrows by `typeof`, `instanceof`, `in`, truthiness, equality, and
|
|
21
|
+
**user-defined type guards** (`function isUser(x: unknown): x is User`). A guard
|
|
22
|
+
that returns `x is T` teaches the compiler to narrow at every call site — far
|
|
23
|
+
safer than `as T`.
|
|
24
|
+
|
|
25
|
+
## Discriminated unions + exhaustiveness
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
type Shape =
|
|
29
|
+
| { kind: "circle"; r: number }
|
|
30
|
+
| { kind: "rect"; w: number; h: number };
|
|
31
|
+
|
|
32
|
+
function area(s: Shape): number {
|
|
33
|
+
switch (s.kind) {
|
|
34
|
+
case "circle": return Math.PI * s.r ** 2;
|
|
35
|
+
case "rect": return s.w * s.h;
|
|
36
|
+
default: { const _exhaustive: never = s; return _exhaustive; }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The `never` default makes adding a new `kind` a **compile error** until you handle
|
|
42
|
+
it — the type system enforces completeness. Model every "one of N states" this way.
|
|
43
|
+
|
|
44
|
+
## Generics — link types, don't decorate
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
function map<T, U>(arr: readonly T[], f: (x: T) => U): U[] { return arr.map(f); }
|
|
48
|
+
function prop<T, K extends keyof T>(o: T, k: K): T[K] { return o[k]; }
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A generic is earned when a type parameter appears in **two** positions and links
|
|
52
|
+
them (input → output). `K extends keyof T` constrains the key to the object's
|
|
53
|
+
real keys, so `prop(user, "naem")` is a compile error.
|
|
54
|
+
|
|
55
|
+
## Utility & mapped types — reach for built-ins first
|
|
56
|
+
|
|
57
|
+
| Need | Built-in |
|
|
58
|
+
|---|---|
|
|
59
|
+
| all optional | `Partial<T>` |
|
|
60
|
+
| all required | `Required<T>` |
|
|
61
|
+
| subset of keys | `Pick<T, "a" \| "b">` |
|
|
62
|
+
| drop keys | `Omit<T, "id">` |
|
|
63
|
+
| dict | `Record<K, V>` |
|
|
64
|
+
| function's return | `ReturnType<typeof fn>` |
|
|
65
|
+
| element of array | `T[number]` |
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// derive types from a single source instead of redeclaring
|
|
69
|
+
const ROLES = ["admin", "user", "guest"] as const;
|
|
70
|
+
type Role = typeof ROLES[number]; // "admin" | "user" | "guest"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Deriving types from a `const` (or a zod schema via `z.infer`) keeps one source of
|
|
74
|
+
truth — the type can't drift from the value. Mapped + conditional types
|
|
75
|
+
(`{ [K in keyof T]: ... }`, `T extends U ? X : Y`) build on these; reach for them
|
|
76
|
+
only when a built-in doesn't fit.
|
|
77
|
+
|
|
78
|
+
## `satisfies` — check without widening
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
const config = { port: 8080, host: "0.0.0.0" } satisfies Record<string, string | number>;
|
|
82
|
+
config.port; // still typed as number (not widened to string | number)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`satisfies` validates a literal against a type while keeping the narrow inferred
|
|
86
|
+
type — better than `: Type` (which widens) or `as Type` (which doesn't check).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Audit a tsconfig.json for the strictness flags that catch real bugs.
|
|
2
|
+
|
|
3
|
+
PURPOSE: Flag a tsconfig that leaves the type checker blindfolded — one
|
|
4
|
+
summary instead of eyeballing nested compilerOptions.
|
|
5
|
+
INPUT: tsconfig path (default tsconfig.json) or --file. [--json]
|
|
6
|
+
OUTPUT: Findings on stderr; "clean"/"N finding(s)" on stdout. Exit 0
|
|
7
|
+
clean, 1 findings, 2 usage/parse error.
|
|
8
|
+
DEPENDENCIES: stdlib only. Tolerates JSONC (comments, trailing commas).
|
|
9
|
+
NOTES: `extends` is NOT resolved — a flag may be inherited; the script
|
|
10
|
+
says so rather than guess. Pure audit() is unit-testable.
|
|
11
|
+
Spec: docs/playbooks/skill-authoring.md; craft: ../SKILL.md.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import argparse
|
|
17
|
+
import json
|
|
18
|
+
import re
|
|
19
|
+
import sys
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
# flag -> (required_value, why)
|
|
23
|
+
REQUIRED = {
|
|
24
|
+
"strict": (True, "the umbrella flag — without it null-safety + implicit-any are off"),
|
|
25
|
+
}
|
|
26
|
+
RECOMMENDED = {
|
|
27
|
+
"noUncheckedIndexedAccess": (True, "makes arr[i] honestly T | undefined"),
|
|
28
|
+
"noImplicitOverride": (True, "catches a method that no longer overrides its base"),
|
|
29
|
+
"exactOptionalPropertyTypes": (True, "distinguishes missing from undefined"),
|
|
30
|
+
"noFallthroughCasesInSwitch": (True, "catches a missing break/return in a switch"),
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def strip_jsonc(text: str) -> str:
|
|
35
|
+
text = re.sub(r"/\*.*?\*/", "", text, flags=re.DOTALL) # block comments
|
|
36
|
+
text = re.sub(r"(^|\s)//[^\n]*", r"\1", text) # line comments
|
|
37
|
+
text = re.sub(r",(\s*[}\]])", r"\1", text) # trailing commas
|
|
38
|
+
return text
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def load_tsconfig(text: str) -> dict:
|
|
42
|
+
data = json.loads(strip_jsonc(text))
|
|
43
|
+
if not isinstance(data, dict):
|
|
44
|
+
raise ValueError("tsconfig root must be an object")
|
|
45
|
+
return data
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def audit(config: dict) -> list[str]:
|
|
49
|
+
opts = config.get("compilerOptions", {})
|
|
50
|
+
findings: list[str] = []
|
|
51
|
+
for flag, (want, why) in REQUIRED.items():
|
|
52
|
+
if opts.get(flag) != want:
|
|
53
|
+
findings.append(f"{flag} != {json.dumps(want)} — {why}")
|
|
54
|
+
for flag, (want, why) in RECOMMENDED.items():
|
|
55
|
+
if opts.get(flag) != want:
|
|
56
|
+
findings.append(f"{flag} not set — {why}")
|
|
57
|
+
if "extends" in config and findings:
|
|
58
|
+
findings.append(
|
|
59
|
+
f"note: this config extends {config['extends']!r}; "
|
|
60
|
+
"a flag above may be inherited — verify the resolved config"
|
|
61
|
+
)
|
|
62
|
+
return findings
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def main(argv: list[str]) -> int:
|
|
66
|
+
parser = argparse.ArgumentParser(description=__doc__.split("\n")[0])
|
|
67
|
+
parser.add_argument("path", nargs="?", default="tsconfig.json")
|
|
68
|
+
parser.add_argument("--file", default=None)
|
|
69
|
+
parser.add_argument("--json", action="store_true", dest="as_json")
|
|
70
|
+
args = parser.parse_args(argv)
|
|
71
|
+
|
|
72
|
+
target = args.file or args.path
|
|
73
|
+
try:
|
|
74
|
+
findings = audit(load_tsconfig(Path(target).read_text(encoding="utf-8")))
|
|
75
|
+
except FileNotFoundError:
|
|
76
|
+
print(f"error: {target} not found", file=sys.stderr)
|
|
77
|
+
return 2
|
|
78
|
+
except (json.JSONDecodeError, ValueError) as exc:
|
|
79
|
+
print(f"error: {target}: {exc}", file=sys.stderr)
|
|
80
|
+
return 2
|
|
81
|
+
|
|
82
|
+
for f in findings:
|
|
83
|
+
print(f" ✗ {f}", file=sys.stderr)
|
|
84
|
+
if args.as_json:
|
|
85
|
+
print(json.dumps({"findings": findings, "count": len(findings)}))
|
|
86
|
+
else:
|
|
87
|
+
print("clean" if not findings else f"{len(findings)} finding(s)")
|
|
88
|
+
return 1 if findings else 0
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if __name__ == "__main__":
|
|
92
|
+
raise SystemExit(main(sys.argv[1:]))
|
core/subsystems.yaml
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Subsystem (module) registry — TASK-349. VSCode-style modularity: the kernel
|
|
2
|
+
# is always on; optional modules toggle per project via the state API
|
|
3
|
+
# (cli/subsystems.py → $COS_STATE_DIR/subsystems-state.json).
|
|
4
|
+
#
|
|
5
|
+
# Every hook id below MUST exist in src/core/hooks/registry.yaml
|
|
6
|
+
# (tests/test_cli.py::TestSubsystems cross-validates). Safety-category hooks
|
|
7
|
+
# are non-disableable regardless of module membership (TASK-256 layer);
|
|
8
|
+
# `kernel: true` additionally pins the whole module.
|
|
9
|
+
#
|
|
10
|
+
# Schema: id, label, hint, kernel, hooks[], tools[], skills[], commands[], rules[], depends_on[], hidden.
|
|
11
|
+
# `hint` = one-line "when to enable" surfaced in the Hub Config → Modules tab (discovery UX).
|
|
12
|
+
# `tools` trailing '*' = MCP prefix family (tools/_shared.py gate).
|
|
13
|
+
# `commands` = slash-command stems (core/commands/<name>.md) UNAMBIGUOUSLY owned
|
|
14
|
+
# by this module; disabling it unlinks them from the adapter commands dir
|
|
15
|
+
# (ref-counted) via module_commands.cascade_module_commands (TASK-481). Always-on
|
|
16
|
+
# commands (classify/verify/review/diagnose/new-project) are never listed.
|
|
17
|
+
# `skills` = domain-skill names UNAMBIGUOUSLY owned by this module; disabling it
|
|
18
|
+
# unlinks them (ref-counted, override-aware) via skill_commands.cascade_module_skills
|
|
19
|
+
# (TASK-475). Always-on skills (clean-code, thinking_os, search) are never listed.
|
|
20
|
+
# `rules` = core rule filenames (src/core/rules/<name>.md) UNAMBIGUOUSLY owned by
|
|
21
|
+
# this module; disabling it unlinks them from the adapter rules dir (ref-counted)
|
|
22
|
+
# via module_commands.cascade_module_rules. Cross-cutting rules (git-workflow,
|
|
23
|
+
# anti-overengineering, api-contract-discipline, thinking_os, transparency-banner,
|
|
24
|
+
# test-discipline) and derived rules (dimension-registry, skill-enforcement) are
|
|
25
|
+
# never listed. A disabled module's rule also self-guards as inert (defense-in-depth).
|
|
26
|
+
# `hidden: true` keeps a reserved id stable but drops it from every toggle UI.
|
|
27
|
+
version: 1
|
|
28
|
+
|
|
29
|
+
# Profiles (TASK-509): named curated module sets for `cos init --profile <name>`.
|
|
30
|
+
# Each profile lists the modules it DISABLES (everything else stays on); the
|
|
31
|
+
# resolver feeds that union through the existing --disable-module path into
|
|
32
|
+
# subsystems-state.json. Progressive disclosure / least-surface-by-default — a
|
|
33
|
+
# fresh consumer gets a leaner MCP tool surface; `full` is the all-on escape
|
|
34
|
+
# (byte-identical to a no-profile init). Disabled lists must stay dependency-safe
|
|
35
|
+
# (never drop a module another profile-enabled module depends on).
|
|
36
|
+
default_profile: standard
|
|
37
|
+
profiles:
|
|
38
|
+
lite: { disabled: [docs, tasks, graph, memory, cognition, observability, hub-extras, cicd] } # kernel-only: discipline + safety, ~zero MCP tools (MCP-averse adopters)
|
|
39
|
+
core: { disabled: [memory, cognition, observability, cicd] } # kernel + docs + tasks + graph
|
|
40
|
+
standard: { disabled: [cognition, cicd] } # + memory + observability (default)
|
|
41
|
+
full: { disabled: [] } # everything (today's behaviour)
|
|
42
|
+
|
|
43
|
+
modules:
|
|
44
|
+
- id: kernel
|
|
45
|
+
label: "Kernel — state, env, session lifecycle + always-on safety/enforcement discipline"
|
|
46
|
+
hint: "Always on — lifecycle + the non-negotiable safety/enforcement discipline surface."
|
|
47
|
+
kernel: true
|
|
48
|
+
# Lifecycle + the non-negotiable discipline surface. Safety-category hooks
|
|
49
|
+
# are non-disableable regardless of module (project_overrides filters them);
|
|
50
|
+
# pinning enforcement + meta-governance here makes the registry↔module map
|
|
51
|
+
# total so every hook has an owner (audit F9), with none toggleable-away.
|
|
52
|
+
hooks:
|
|
53
|
+
- session-context
|
|
54
|
+
- session-end
|
|
55
|
+
- classify-task-mode
|
|
56
|
+
- agent-presence
|
|
57
|
+
- track-skill
|
|
58
|
+
- inject-mcp-caller-session
|
|
59
|
+
# safety (never disableable — category-gated in project_overrides)
|
|
60
|
+
- block-secrets
|
|
61
|
+
- block-dangerous-commands
|
|
62
|
+
- block-bad-patterns
|
|
63
|
+
- block-hardcoded-literals
|
|
64
|
+
- block-migration-conflict
|
|
65
|
+
- block-protected-files
|
|
66
|
+
- block-uv-heredoc
|
|
67
|
+
- check-mcp-extras
|
|
68
|
+
- enforce-task-transition
|
|
69
|
+
- enforce-wip-limit
|
|
70
|
+
- lint-task
|
|
71
|
+
- validate-task-frontmatter
|
|
72
|
+
# core enforcement discipline (always on)
|
|
73
|
+
- branch-guard
|
|
74
|
+
- block-shared-tree-edit
|
|
75
|
+
- pr-reap
|
|
76
|
+
- nudge-git-mode
|
|
77
|
+
- enforce-commit-message
|
|
78
|
+
- enforce-scaffold-boundary
|
|
79
|
+
- enforce-skill
|
|
80
|
+
- enforce-template
|
|
81
|
+
- enforce-verify
|
|
82
|
+
- enforce-zoom
|
|
83
|
+
- search-enforce-inventory
|
|
84
|
+
- search-verify-remaining
|
|
85
|
+
- test-governor
|
|
86
|
+
- thinking_os-gate
|
|
87
|
+
# meta-repo governance (coding-os-internal; no-ops in consumers)
|
|
88
|
+
- check-agents-md-refs
|
|
89
|
+
- check-agents-md-size
|
|
90
|
+
- remind-dogfood
|
|
91
|
+
- warn-destructive-edit
|
|
92
|
+
- warn-diff-size
|
|
93
|
+
# Always-on tools that match no module pattern, so the gate never removes them
|
|
94
|
+
# (auditable floor — the tool gate skips kernel by design). cos_classify_prompt
|
|
95
|
+
# (Record Gate) + cos_health (diagnostic) are kernel by design; cos_traceability
|
|
96
|
+
# is cross-cutting; cos_failure_pattern_query reads cognition-populated data and
|
|
97
|
+
# is a candidate to move to `cognition` later (rank-11 follow-up).
|
|
98
|
+
tools: [cos_classify_prompt, cos_health, cos_traceability, cos_failure_pattern_query]
|
|
99
|
+
depends_on: []
|
|
100
|
+
|
|
101
|
+
- id: docs
|
|
102
|
+
label: "Docs system — SSOT docs, doc search, doc hygiene"
|
|
103
|
+
hint: "Enable for SSOT doc search (cos_doc_*) + the doc-anchor / docs-first discipline."
|
|
104
|
+
kernel: false
|
|
105
|
+
hooks: [enforce-doc-anchor, enforce-doc-sync, nudge-docs-first, check-doc-size, auto-regen-doc-index, auto-reindex-docs]
|
|
106
|
+
tools: ["cos_doc_*"]
|
|
107
|
+
depends_on: []
|
|
108
|
+
|
|
109
|
+
- id: tasks
|
|
110
|
+
label: "Task system — Scrumban board, lifecycle, work logs"
|
|
111
|
+
hint: "Enable for the Scrumban board, task lifecycle gates, and work logs (cos_task_*)."
|
|
112
|
+
kernel: false
|
|
113
|
+
hooks: [enforce-task-start, enforce-task-body, nudge-task-discovery, warn-abandoned-task, nudge-reentry, remind-daily, auto-task-sync, sync-task-current, link-commit-to-task, reclaim-sweep, capture-work-log]
|
|
114
|
+
tools: ["cos_task_*", cos_work_log_append]
|
|
115
|
+
skills: [task-driver]
|
|
116
|
+
commands: [board, daily, retro, task]
|
|
117
|
+
# tasks→docs is NOT a code dependency (board_os imports nothing from docs); it
|
|
118
|
+
# is enforcement-locality — the docs-first code-write BLOCK gate (enforce-doc-anchor)
|
|
119
|
+
# lives in the docs module and consumes each task's Read First, so tasks-on/docs-off
|
|
120
|
+
# would silently strip that gate. Keep hard.
|
|
121
|
+
depends_on: [docs]
|
|
122
|
+
depends_on_reason: "Enforcement-locality: the docs-first code-write gate (enforce-doc-anchor) lives in the docs module and consumes each task's Read First — tasks-on/docs-off would silently strip that gate."
|
|
123
|
+
|
|
124
|
+
- id: graph
|
|
125
|
+
label: "Knowledge graph — code/doc graph, structural queries"
|
|
126
|
+
hint: "Enable for structural code/doc queries — callers, blast radius, rename (cos_graph_*)."
|
|
127
|
+
kernel: false
|
|
128
|
+
hooks: [enforce-graph-context, enforce-graph-first-read, enforce-rename-plan, nudge-graph-os, warn-graph-empty, verify-rename-callers, auto-graph-reconcile-shell]
|
|
129
|
+
tools: ["cos_graph_*"]
|
|
130
|
+
skills: [graph-explorer, graph-os-authoring]
|
|
131
|
+
depends_on: []
|
|
132
|
+
|
|
133
|
+
- id: memory
|
|
134
|
+
label: "Agent memory — observations, learning, recall"
|
|
135
|
+
hint: "Enable for cross-session recall + the learning loop (cos_search, cos_learn_*)."
|
|
136
|
+
kernel: false
|
|
137
|
+
hooks: [enforce-memory-check, capture-observation, jit-recall, nudge-learn-narrative, remind-learn-validate, auto-brain-decay, drain-embedding-outbox, check-capture-worked, ensure-agent-memory-link, sync-agent-memory]
|
|
138
|
+
tools: [cos_search, cos_observation_record, cos_timeline, cos_details, "cos_learn_*", "cos_retrieval_*", cos_promote, cos_digest_regenerate]
|
|
139
|
+
skills: [agent-memory]
|
|
140
|
+
commands: [memory-search]
|
|
141
|
+
rules: [memory.md]
|
|
142
|
+
depends_on: []
|
|
143
|
+
|
|
144
|
+
- id: cognition
|
|
145
|
+
label: "Cognition — role composition, reasoning primers + workflow nudges"
|
|
146
|
+
hint: "Enable for role-chain composition + reasoning primers (adds per-session token cost)."
|
|
147
|
+
kernel: false
|
|
148
|
+
# The optional reasoning-assist surface: session primers, role chain
|
|
149
|
+
# composition, and soft nudges. Toggle off to cut the per-session token
|
|
150
|
+
# cost of the cognitive scaffolding (hard gates stay in kernel).
|
|
151
|
+
hooks: [advance-role, auto-compose-roles, enforce-anti-ambiguity, nudge-model-routing, nudge-thinking-os, rules-primer, session-skill-primer, track-backtrack, track-discovery, nudge-reuse-first, regen-reminder, test-first-reminder]
|
|
152
|
+
# The reasoning-assist tool surface: role composition, formula dispatch,
|
|
153
|
+
# supervision, model/skill routing, situation detect. cos_classify_prompt
|
|
154
|
+
# (Record Gate, core loop) + cos_health (diagnostic) stay KERNEL by design.
|
|
155
|
+
tools: ["cos_dispatch_*", "cos_route_*", cos_compose_chain, cos_supervise, cos_supervise_record_output, cos_role_info, cos_situation_detect, cos_takeover, cos_analyze_task, cos_ambiguity_check, cos_backtrack_log, cos_discovery]
|
|
156
|
+
# /compose is the role-chain composition surface; /role-* commands map from
|
|
157
|
+
# thinking_os/agents/ (a separate source) and stay always-on (Rule 22 — not
|
|
158
|
+
# worth the agents/ source-mapping to gate a low-frequency advanced surface).
|
|
159
|
+
commands: [compose]
|
|
160
|
+
rules: [model-routing.md]
|
|
161
|
+
depends_on: []
|
|
162
|
+
|
|
163
|
+
- id: observability
|
|
164
|
+
label: "Observability — session tracing, transcript + tool-failure capture"
|
|
165
|
+
hint: "Enable for session tracing, metrics, and tool-failure / transcript capture (cos_metric_*)."
|
|
166
|
+
kernel: false
|
|
167
|
+
hooks: [auto-trace-rotate, capture-tool-failure, record-verify-auto, snapshot-transcript]
|
|
168
|
+
# Session metrics, log query, trajectory snapshots, presence. Internal
|
|
169
|
+
# callers (task-done outcome recording, hooks) use the impl functions, not
|
|
170
|
+
# these MCP tools, so gating is surface-only — it never breaks recording.
|
|
171
|
+
tools: ["cos_metric_*", "cos_trajectory_*", cos_log_query, cos_presence_query]
|
|
172
|
+
depends_on: []
|
|
173
|
+
|
|
174
|
+
- id: hub-extras
|
|
175
|
+
label: "Hub extras — web UI conveniences beyond the API core"
|
|
176
|
+
hint: "Enable for web-UI conveniences (ensure-hub-up, MCP-down banner) beyond the API core."
|
|
177
|
+
kernel: false
|
|
178
|
+
hooks: [ensure-hub-up, warn-mcp-down]
|
|
179
|
+
tools: []
|
|
180
|
+
depends_on: []
|
|
181
|
+
|
|
182
|
+
- id: cicd
|
|
183
|
+
label: "CI/CD — generated GitHub Actions workflow + backend Dockerfiles"
|
|
184
|
+
hint: "Enable to render a GitHub Actions workflow + backend Dockerfiles at init/update."
|
|
185
|
+
kernel: false
|
|
186
|
+
# Owns no hooks/tools: it gates the .github/workflows/ci.yml render at init
|
|
187
|
+
# and update (cli.main / cli.update → materialize_ci_workflow). Off in the
|
|
188
|
+
# lean profiles; `--profile full` or an explicit enable turns it on.
|
|
189
|
+
hooks: []
|
|
190
|
+
tools: []
|
|
191
|
+
depends_on: []
|
|
192
|
+
|
|
193
|
+
# Roadmap module (TASK-372 / ADR-0008): the visual Design surface. Registered
|
|
194
|
+
# so the id is reserved, but hidden from the toggle UI until it ships hooks/
|
|
195
|
+
# tools — a live Enable/Disable on an empty module is a no-op footgun (F10).
|
|
196
|
+
- id: design
|
|
197
|
+
label: "Design — visual design surface (roadmap)"
|
|
198
|
+
kernel: false
|
|
199
|
+
hooks: []
|
|
200
|
+
tools: []
|
|
201
|
+
depends_on: []
|
|
202
|
+
hidden: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""thinking_os — memory, learning, metrics, routing, cognition kernel."""
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from functools import lru_cache
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
import yaml
|
|
7
|
+
|
|
8
|
+
_ADAPTERS_DIR = Path(__file__).resolve().parent.parent.parent / "adapters"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@lru_cache(maxsize=1)
|
|
12
|
+
def agent_state_prefixes() -> frozenset[str]:
|
|
13
|
+
"""Return {".claude/", ".codex/", ...} read from adapter manifests."""
|
|
14
|
+
if not _ADAPTERS_DIR.exists():
|
|
15
|
+
return frozenset()
|
|
16
|
+
|
|
17
|
+
prefixes: set[str] = set()
|
|
18
|
+
for manifest in _ADAPTERS_DIR.glob("*/adapter.yaml"):
|
|
19
|
+
try:
|
|
20
|
+
data = yaml.safe_load(manifest.read_text()) or {}
|
|
21
|
+
except yaml.YAMLError:
|
|
22
|
+
continue
|
|
23
|
+
# Each adapter declares hooks_dir/settings_file/rules_dir under its
|
|
24
|
+
# private state root (e.g. ".claude/hooks"). Take the leading segment.
|
|
25
|
+
for key in ("hooks_dir", "settings_file", "rules_dir", "skills_dir", "commands_dir"):
|
|
26
|
+
value = data.get(key)
|
|
27
|
+
if not isinstance(value, str):
|
|
28
|
+
continue
|
|
29
|
+
head = value.split("/", 1)[0]
|
|
30
|
+
if head.startswith("."):
|
|
31
|
+
prefixes.add(head + "/")
|
|
32
|
+
return frozenset(prefixes)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Role Prompt Library
|
|
2
|
+
|
|
3
|
+
11 role-agent prompts (`researcher.md` … `refactorer.md`). Each file is the
|
|
4
|
+
prompt the dispatched agent sees when its role is fired by the supervisor.
|
|
5
|
+
**Not** the routing config — that lives in [../roles/](../roles/).
|
|
6
|
+
|
|
7
|
+
Catalog (canonical order, per the formulas-en.md spec — citation-only,
|
|
8
|
+
*never* used as runtime IDs):
|
|
9
|
+
|
|
10
|
+
| File | Role |
|
|
11
|
+
|-----------------------|--------------------|
|
|
12
|
+
| `researcher.md` | Research & Discovery |
|
|
13
|
+
| `analyst.md` | Problem Decomposition & Analysis |
|
|
14
|
+
| `architect.md` | Architecture & System Design |
|
|
15
|
+
| `documenter.md` | Technical Documentation |
|
|
16
|
+
| `implementer.md` | Implementation |
|
|
17
|
+
| `reviewer.md` | Testing, Code Review & Performance |
|
|
18
|
+
| `debugger.md` | Debugging |
|
|
19
|
+
| `security_auditor.md` | Security Audit |
|
|
20
|
+
| `deployer.md` | Deployment & DevOps |
|
|
21
|
+
| `observer.md` | Monitoring & Observability |
|
|
22
|
+
| `refactorer.md` | Refactoring & Technical Debt |
|
|
23
|
+
|
|
24
|
+
See [../roles/README.md](../roles/README.md) for the full split between
|
|
25
|
+
"when to fire" (`roles/`) and "what to say" (`agents/`).
|
|
26
|
+
|
|
27
|
+
## Frontmatter contract
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
---
|
|
31
|
+
id: <role-slug> # researcher | analyst | architect | …
|
|
32
|
+
name: "Human-readable label"
|
|
33
|
+
formula_ref: <role-slug> # mirrors id
|
|
34
|
+
attach_phases: [MAP, CLASSIFY] # which Cognitive Cycle phases consume this role
|
|
35
|
+
intensity_min: light # minimum intensity at which this role runs
|
|
36
|
+
model_pref: # per-complexity model routing
|
|
37
|
+
complicated: sonnet
|
|
38
|
+
complex: opus
|
|
39
|
+
tools_budget: # which MCP / built-in tools the role may call
|
|
40
|
+
- cos_search
|
|
41
|
+
- Read
|
|
42
|
+
- Grep
|
|
43
|
+
input_schema: cognition.<Role>Input # Pydantic model for input
|
|
44
|
+
output_schema: cognition.<Role>Output # Pydantic model for output (EvidenceBundle field)
|
|
45
|
+
max_tokens_in: 4000
|
|
46
|
+
max_tokens_out: 2000
|
|
47
|
+
timeout_s: 120
|
|
48
|
+
intensity_steps: # which prompt steps run at each intensity tier
|
|
49
|
+
light: [1, 2, 3]
|
|
50
|
+
standard: [1, 2, 3, 4, 5]
|
|
51
|
+
full: [1, 2, 3, 4, 5, 6]
|
|
52
|
+
backtrack_triggers: [] # conditions that demand re-dispatch upstream
|
|
53
|
+
criteria_required: # acceptance criteria per step
|
|
54
|
+
step_1: [scoped, observable]
|
|
55
|
+
...
|
|
56
|
+
---
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`<Role>` in `input_schema` / `output_schema` is CamelCase — `Researcher`,
|
|
60
|
+
`Analyst`, `Architect`, …, `SecurityAuditor`, …, `Refactorer`.
|
|
61
|
+
|
|
62
|
+
## Body
|
|
63
|
+
|
|
64
|
+
The prompt itself — instructions to the role, structured as numbered steps.
|
|
65
|
+
Step indices match `intensity_steps` keys above.
|
|
66
|
+
|
|
67
|
+
## Validated by
|
|
68
|
+
|
|
69
|
+
- `cli/doctor.py` C28 check (frontmatter has `id: <role-slug>`, file exists)
|
|
70
|
+
- `core/thinking_os/cognition.py::load_agent_registry` (parses frontmatter)
|
|
71
|
+
- `tests/test_role_registry.py` (slug ↔ filename consistency)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: analyst
|
|
3
|
+
name: "Problem Decomposition & Analysis"
|
|
4
|
+
formula_ref: analyst
|
|
5
|
+
attach_phases: [MAP, ORIENT, PLAN]
|
|
6
|
+
canonical_order: 1
|
|
7
|
+
intensity_min: light
|
|
8
|
+
model_pref:
|
|
9
|
+
complicated: sonnet
|
|
10
|
+
complex: opus
|
|
11
|
+
skills: [thinking_os]
|
|
12
|
+
tools_budget:
|
|
13
|
+
- cos_search
|
|
14
|
+
- cos_doc_search
|
|
15
|
+
- cos_graph_query
|
|
16
|
+
- cos_graph_context
|
|
17
|
+
- Grep
|
|
18
|
+
- Glob
|
|
19
|
+
- Read
|
|
20
|
+
input_schema: cognition.AnalystInput
|
|
21
|
+
output_schema: cognition.AnalystOutput
|
|
22
|
+
max_tokens_in: 8000
|
|
23
|
+
max_tokens_out: 4000
|
|
24
|
+
timeout_s: 90
|
|
25
|
+
intensity_steps:
|
|
26
|
+
light: [1, 2, 3, 4, 5]
|
|
27
|
+
standard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
|
28
|
+
full: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
|
29
|
+
backtrack_targets: [researcher]
|
|
30
|
+
backtrack_triggers:
|
|
31
|
+
- signal: missing_actor
|
|
32
|
+
target: analyst
|
|
33
|
+
reason_template: "Actor referenced but not in analyst actor map: {actor}"
|
|
34
|
+
- signal: undefined_capability
|
|
35
|
+
target: analyst
|
|
36
|
+
reason_template: "Capability {cap} not in analyst goal tree"
|
|
37
|
+
criteria_required:
|
|
38
|
+
step_1: [scoped, measurable, owned, connected_to_user_value]
|
|
39
|
+
step_2: [observable, scoped, owned]
|
|
40
|
+
step_3: [scoped, testable, observable]
|
|
41
|
+
step_4: [testable, observable, scoped]
|
|
42
|
+
step_5: [testable, scoped]
|
|
43
|
+
step_6: [scoped, observable]
|
|
44
|
+
step_7: [observable, testable]
|
|
45
|
+
step_8: [observable, scoped]
|
|
46
|
+
step_9: [scoped, owned, reversible_or_justified]
|
|
47
|
+
step_10: [scoped, observable]
|
|
48
|
+
step_11: [observable, owned]
|
|
49
|
+
step_12: [testable, scoped, owned, observable]
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
# analyst — Problem Decomposition & Analysis
|
|
53
|
+
|
|
54
|
+
## Character
|
|
55
|
+
I value precise decomposition because a problem named wrongly is solved wrongly. I separate problem, behaviour, rules, and risk before anyone writes code, and I name the actors no one else noticed. (constitution values: minimal-context, docs-are-the-contract)
|
|
56
|
+
|
|
57
|
+
## Your role
|
|
58
|
+
You are the analyst cognitive agent. Your job is to decompose a problem from
|
|
59
|
+
zero to leaf-tasks where each is implementable in 1–2 days. You produce a
|
|
60
|
+
structured AnalystOutput: problem statement, actor map, goal tree, scenarios,
|
|
61
|
+
decision table, conceptual data model, state machines, event map,
|
|
62
|
+
permission matrix, dependency map, unknowns.
|
|
63
|
+
|
|
64
|
+
## Inputs you receive
|
|
65
|
+
|
|
66
|
+
This command runs in **two modes** — choose based on what the user message
|
|
67
|
+
already contains.
|
|
68
|
+
|
|
69
|
+
**(A) Composer mode** — `cos_dispatch_formula_run` invoked this role. The user
|
|
70
|
+
message contains a `AnalystInput` JSON object (shape defined by the
|
|
71
|
+
`input_schema` frontmatter field).
|
|
72
|
+
|
|
73
|
+
**(B) Interactive mode** — user invoked the slash command and the user
|
|
74
|
+
message has **no `AnalystInput`-shaped JSON**. Auto-detect every field from
|
|
75
|
+
repo state before starting the procedure:
|
|
76
|
+
|
|
77
|
+
| field | how to detect |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `task_id` | `cos_task_board(status_filter=["in_progress"])`, narrow by `$ARGUMENTS` if present |
|
|
80
|
+
| `scope` | `git diff <base>...HEAD` (base = first `$ARGUMENTS` token if it looks like a ref, else `main`) |
|
|
81
|
+
| `stack` | `src/templates/<id>/stack.yaml` of the enabled template |
|
|
82
|
+
| `domain` | `cos_doc_headers_by(domain=...)` or the active task's frontmatter |
|
|
83
|
+
| `nfr_targets` | `docs/_meta/nfr.yaml` if present, else `"none configured"` |
|
|
84
|
+
|
|
85
|
+
Echo your detected inputs in a short opening paragraph so the user can correct
|
|
86
|
+
you before you spend tokens on the procedure.
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## Procedure (12 steps — run intensity_steps subset)
|
|
90
|
+
|
|
91
|
+
1. **Problem statement** — one sentence. Must be: scoped, measurable, owned, connected to user value.
|
|
92
|
+
2. **Actor map** — who interacts with the system (human + automated). Each actor: id, role, capabilities.
|
|
93
|
+
3. **Goal tree** — hierarchical decomposition. Root = business goal. Leaves = implementable sub-goals.
|
|
94
|
+
4. **Success scenarios** — 3–10 Given/When/Then. Cover happy path + 2 failure paths minimum.
|
|
95
|
+
5. **Scope boundary** — explicit scope_in / scope_out lists.
|
|
96
|
+
6. **Decision table** — conditions × actions matrix for non-trivial business rules.
|
|
97
|
+
7. **Conceptual data model** — entities, attributes, relations. No implementation details.
|
|
98
|
+
8. **State machines** — for stateful entities. States + transitions + guards.
|
|
99
|
+
9. **Event map** — domain events triggered by state transitions or user actions.
|
|
100
|
+
10. **Permission matrix** — actors × resources × allowed actions.
|
|
101
|
+
11. **Dependency map** — external services, libraries, APIs this component depends on.
|
|
102
|
+
12. **Unknowns** — open questions that block progress. Each: description, impact, proposed resolution.
|
|
103
|
+
|
|
104
|
+
## Output contract
|
|
105
|
+
|
|
106
|
+
**Match the invocation mode**:
|
|
107
|
+
|
|
108
|
+
**(A) Composer mode** — return JSON only matching `AnalystOutput`. No prose
|
|
109
|
+
outside the fenced block:
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"problem_statement": "...",
|
|
114
|
+
"scope_in": ["..."],
|
|
115
|
+
"scope_out": ["..."],
|
|
116
|
+
"success_metrics": [{"name": "...", "target": "...", "measurement": "..."}],
|
|
117
|
+
"actors": [{"id": "...", "role": "...", "capabilities": ["..."]}],
|
|
118
|
+
"goal_tree": {"id": "root", "description": "...", "children": []},
|
|
119
|
+
"scenarios": [{"id": "S1", "given": "...", "when": "...", "then": "..."}],
|
|
120
|
+
"decision_table": {"conditions": [], "actions": [], "rules": []},
|
|
121
|
+
"data_model": {"entities": [], "relations": []},
|
|
122
|
+
"state_machines": [],
|
|
123
|
+
"events": [],
|
|
124
|
+
"permissions": {"actors": [], "resources": [], "rules": []},
|
|
125
|
+
"dependencies": {"nodes": [], "edges": []},
|
|
126
|
+
"unknowns": [{"id": "U1", "description": "...", "impact": "...", "resolution": ""}]
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
**(B) Interactive mode** — return a Markdown review with these sections:
|
|
130
|
+
|
|
131
|
+
1. **Detected inputs** — one paragraph echoing task_id / scope / stack / nfr.
|
|
132
|
+
2. **Summary** — one paragraph: what was done, overall verdict.
|
|
133
|
+
3. **Findings or Deliverables** — bulleted; severities critical / high / medium / low / info where applicable.
|
|
134
|
+
4. **Next step** — single recommended action (or "ready to hand off to <next-role>").
|
|
135
|
+
|
|
136
|
+
Then append the **same `AnalystOutput` envelope** as a fenced ```json``` block
|
|
137
|
+
at the very bottom so `cos_supervise_record_output` can parse it. Both
|
|
138
|
+
audiences (human + composer) consume the same output from one emission.
|
|
139
|
+
|