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,60 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
id: python
|
|
3
|
+
language: python
|
|
4
|
+
label: "Python library / CLI / MCP server"
|
|
5
|
+
category: library
|
|
6
|
+
|
|
7
|
+
structure:
|
|
8
|
+
root: src
|
|
9
|
+
tree: |
|
|
10
|
+
src/<package>/ # src-layout package
|
|
11
|
+
tests/ # mirrors the package tree
|
|
12
|
+
notes: "src-layout; packaging SSOT is pyproject.toml (docs/engineering/python-rules.md)"
|
|
13
|
+
primary_skill: null
|
|
14
|
+
skills: []
|
|
15
|
+
|
|
16
|
+
# Generic Python stack — for libraries, CLI tools, MCP servers, and the
|
|
17
|
+
# coding-os meta-repo itself. No stack-specific skill files; the always-on
|
|
18
|
+
# core skills (clean-code, thinking_os, codebase-explorer, worktree-orchestration)
|
|
19
|
+
# from base.yaml cover Python authoring.
|
|
20
|
+
#
|
|
21
|
+
# When this stack is selected for the coding-os meta-repo, the canonical
|
|
22
|
+
# rules live in CLAUDE.md (rules 0–23). For consumer projects using this
|
|
23
|
+
# stack, see docs/governance/critical-rules.md as the entry point.
|
|
24
|
+
|
|
25
|
+
substitutions:
|
|
26
|
+
DOMAIN_ROUTES: "Python module / CLI / MCP tool → `docs/playbooks/python-library.md`"
|
|
27
|
+
SKILL_ROUTES: "Python → `clean-code` + `testing-strategy` + `shell-scripting` + `sql-authoring` (core skills)"
|
|
28
|
+
ENGINEERING_RULE_ROUTING: "Python → `docs/engineering/python-rules.md` + `docs/governance/`"
|
|
29
|
+
TOOL_ROUTING_IMPL: "`pytest` (lint/format opt-in: ruff/mypy not enforced by default)"
|
|
30
|
+
QUICK_ROUTING: |-
|
|
31
|
+
- Python module / package task → [Python Library Playbook](./playbooks/python-library.md)
|
|
32
|
+
- MCP tool / CLI command task → [Python Library Playbook](./playbooks/python-library.md)
|
|
33
|
+
- Test / fixture task → `tests/` + `pytest`
|
|
34
|
+
STACK_REF_CODES: |-
|
|
35
|
+
- `REF:PLAYBOOK-PY` → `./playbooks/python-library.md`
|
|
36
|
+
- `REF:PY-RULES` → `./engineering/python-rules.md`
|
|
37
|
+
|
|
38
|
+
ref_codes:
|
|
39
|
+
- {code: "REF:PLAYBOOK-PY", path: "./playbooks/python-library.md", desc: "Python library/CLI playbook"}
|
|
40
|
+
- {code: "REF:PY-RULES", path: "./engineering/python-rules.md", desc: "Python engineering rules"}
|
|
41
|
+
|
|
42
|
+
routing_entries:
|
|
43
|
+
- "Python module / CLI / MCP tool task → [Python Library Playbook](./docs/playbooks/python-library.md)"
|
|
44
|
+
|
|
45
|
+
# No stack-specific rules. CLAUDE.md (or consumer AGENTS.md) carries them.
|
|
46
|
+
rules: []
|
|
47
|
+
|
|
48
|
+
dimensions:
|
|
49
|
+
- {name: "Python module / API", read_files: ["docs/playbooks/python-library.md", "docs/engineering/python-rules.md"]}
|
|
50
|
+
- {name: "CLI command", read_files: ["docs/playbooks/python-library.md"]}
|
|
51
|
+
|
|
52
|
+
# No skill_enforcement globs. Generic clean-code applies to all Python via
|
|
53
|
+
# the global skill list in base.yaml. Stack-specific globs would either
|
|
54
|
+
# duplicate that or conflict with consumer project layouts.
|
|
55
|
+
skill_enforcement: []
|
|
56
|
+
|
|
57
|
+
# No stack-specific Makefile targets. The meta-repo's Makefile already
|
|
58
|
+
# defines `make verify`, `make verify-hooks`, etc. Consumer Python libraries
|
|
59
|
+
# can add targets if they need them.
|
|
60
|
+
makefile_targets: []
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Rails Backend Rules (auto-loaded for src/backend/**/*.rb)
|
|
2
|
+
|
|
3
|
+
> Controllers thin, ActiveRecord models own logic, ONE `rescue_from` chain shapes
|
|
4
|
+
> every error. Full conventions: [rails-rules.md](../scaffold/docs/engineering/rails-rules.md).
|
|
5
|
+
|
|
6
|
+
- Route → controller → model; imports flow one way only.
|
|
7
|
+
- Strong parameters on every write action; raw `params` never reaches the model.
|
|
8
|
+
- Validations live on the model (`validates`), not in the action.
|
|
9
|
+
- Only `ApplicationController`'s `rescue_from` chain writes error bodies.
|
|
10
|
+
- Reversible migrations; schema and data migrations stay separate.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!-- domain:BACKEND | layer:rules | ssot:true | updated:{{DATE}} -->
|
|
2
|
+
# Rails Engineering Rules
|
|
3
|
+
|
|
4
|
+
Purpose: Non-negotiable conventions for the {{PROJECT_NAME}} Rails backend.
|
|
5
|
+
Read when: Editing anything under `src/backend/`.
|
|
6
|
+
Skip when: Frontend/mobile work.
|
|
7
|
+
Read next: [Rails Service Playbook](../playbooks/rails-service.md)
|
|
8
|
+
|
|
9
|
+
> Nav: [Master Index](../00-index.md)
|
|
10
|
+
|
|
11
|
+
## Hard rules
|
|
12
|
+
|
|
13
|
+
1. **Layering** — route → controller → model. Controllers parse params and
|
|
14
|
+
render; ActiveRecord models own business logic. Imports flow one way only
|
|
15
|
+
(the table in the `rails` skill is the SSOT).
|
|
16
|
+
2. **Thin controllers** — an action that runs more than one query or branches on
|
|
17
|
+
business state is a build-blocking review finding; push the logic to the model.
|
|
18
|
+
3. **One error shaper** — only the `rescue_from` chain in `ApplicationController`
|
|
19
|
+
writes error bodies; it logs full detail and returns the problem shape with no
|
|
20
|
+
internals (no backtraces, no SQL).
|
|
21
|
+
4. **Strong parameters fail-closed** — every action whitelists its fields with
|
|
22
|
+
`params.require(...).permit(...)`; raw `params` never reaches `create`/`update`.
|
|
23
|
+
5. **Validations on the model** — data integrity lives in `validates`, not in the
|
|
24
|
+
controller; a save that can fail uses `save!`/`create!` so the error chain maps it.
|
|
25
|
+
6. **Reversible migrations** — `change` when auto-reversible, otherwise paired
|
|
26
|
+
`up`/`down`; schema and data migrations stay separate.
|
|
27
|
+
7. **No floating config** — environment access happens once at boot via
|
|
28
|
+
`Rails.application.config`; models and controllers never read `ENV` inline.
|
|
29
|
+
|
|
30
|
+
## Testing bar
|
|
31
|
+
|
|
32
|
+
Models ≥ unit-spec per public method; controllers ≥ happy + error path via RSpec
|
|
33
|
+
request specs; database-touching code uses transactional fixtures, never a real port.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<!-- domain:BACKEND | layer:playbook | ssot:true | updated:{{DATE}} -->
|
|
2
|
+
# Rails Service Playbook
|
|
3
|
+
|
|
4
|
+
Purpose: The end-to-end recipe for adding or changing a Rails endpoint in {{PROJECT_NAME}}.
|
|
5
|
+
Read when: Any task that adds a controller, route, ActiveRecord model, concern, or migration.
|
|
6
|
+
Skip when: Pure infra/devops work — see the deployment docs.
|
|
7
|
+
Read next: [Rails Engineering Rules](../engineering/rails-rules.md), [Error Format](../api-contracts/error-format.md)
|
|
8
|
+
|
|
9
|
+
> Nav: [Master Index](../00-index.md)
|
|
10
|
+
|
|
11
|
+
## Add an endpoint (the only sanctioned path)
|
|
12
|
+
|
|
13
|
+
1. **Route first** — declare the route in `config/routes.rb` (prefer `resources`
|
|
14
|
+
over hand-rolled paths); the routing table stays the single place URLs live.
|
|
15
|
+
2. **Model** — `app/models/<domain>.rb`: an ActiveRecord class that owns its
|
|
16
|
+
validations, scopes, and business logic. Persistence stays here, not in the
|
|
17
|
+
controller.
|
|
18
|
+
3. **Controller** — `app/controllers/<domain>_controller.rb`: thin. Use strong
|
|
19
|
+
parameters (`params.require(...).permit(...)`), call exactly one model method,
|
|
20
|
+
then `render`. Raise a typed error on failure — never build an error body here.
|
|
21
|
+
4. **Error mapping** — failures surface as exceptions; the `rescue_from` chain in
|
|
22
|
+
`ApplicationController` maps each to a status + the shared problem body
|
|
23
|
+
([error-format](../api-contracts/error-format.md)).
|
|
24
|
+
5. **Concern** — extract cross-cutting behavior (auth filters, pagination) into a
|
|
25
|
+
module under `controllers/concerns/` only when three call sites need it.
|
|
26
|
+
6. **Migration** — `bin/rails generate migration` for schema changes; reversible
|
|
27
|
+
(`change` or paired `up`/`down`). The agent writes it; the user runs `db:migrate`.
|
|
28
|
+
7. **Test** — RSpec request spec per endpoint (happy + error path) + a model spec
|
|
29
|
+
per public method; never bind a real server port.
|
|
30
|
+
8. **Verify** — `cd src/backend && bundle exec rubocop && bundle exec rspec`.
|
|
31
|
+
|
|
32
|
+
## Global wiring (set once in `ApplicationController`)
|
|
33
|
+
|
|
34
|
+
`before_action` filters run auth/loading; the `rescue_from` chain is the single
|
|
35
|
+
error shaper. Every controller inherits both by subclassing `ApplicationController`.
|
|
36
|
+
|
|
37
|
+
## Anti-patterns
|
|
38
|
+
|
|
39
|
+
- Error JSON built inside an action — the `rescue_from` chain owns the shape.
|
|
40
|
+
- A fat controller running queries or business logic — that belongs in the model.
|
|
41
|
+
- Mass-assignment without strong parameters — every action permits its fields.
|
|
42
|
+
- Binding a real port in specs — use request specs against the Rack app.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
|
|
3
|
+
ruby "3.3.0"
|
|
4
|
+
|
|
5
|
+
gem "rails", "~> 7.1"
|
|
6
|
+
gem "puma", "~> 6.4"
|
|
7
|
+
|
|
8
|
+
group :development, :test do
|
|
9
|
+
gem "rspec-rails", "~> 6.1"
|
|
10
|
+
gem "rubocop", "~> 1.60", require: false
|
|
11
|
+
gem "rubocop-rails", "~> 2.23", require: false
|
|
12
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class ApplicationController < ActionController::API
|
|
2
|
+
# The ONLY place that shapes an error response (RFC 9457 problem shape).
|
|
3
|
+
# Controllers and models raise typed errors; this chain maps them.
|
|
4
|
+
rescue_from StandardError, with: :render_internal_error
|
|
5
|
+
rescue_from ActiveRecord::RecordNotFound, with: :render_not_found
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def render_not_found
|
|
10
|
+
render_problem(status: :not_found, title: "Not Found")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def render_internal_error(exception)
|
|
14
|
+
# Full detail to the logger only; never a backtrace to the client.
|
|
15
|
+
logger.error(exception)
|
|
16
|
+
render_problem(status: :internal_server_error, title: "Internal Server Error")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def render_problem(status:, title:)
|
|
20
|
+
render(
|
|
21
|
+
json: { type: "about:blank", title: title, status: Rack::Utils.status_code(status) },
|
|
22
|
+
status: status,
|
|
23
|
+
content_type: "application/problem+json",
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative "boot"
|
|
2
|
+
|
|
3
|
+
require "rails"
|
|
4
|
+
require "action_controller/railtie"
|
|
5
|
+
|
|
6
|
+
# Rails app bootstrap — wires the framework, owns no business logic.
|
|
7
|
+
module Backend
|
|
8
|
+
class Application < Rails::Application
|
|
9
|
+
config.load_defaults 7.1
|
|
10
|
+
config.api_only = true
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
ENV["RAILS_ENV"] ||= "test"
|
|
4
|
+
|
|
5
|
+
require_relative "../config/application"
|
|
6
|
+
Backend::Application.initialize! unless Backend::Application.initialized?
|
|
7
|
+
|
|
8
|
+
require "rspec/rails"
|
|
9
|
+
|
|
10
|
+
RSpec.configure do |config|
|
|
11
|
+
config.infer_spec_type_from_file_location!
|
|
12
|
+
config.expect_with :rspec do |expectations|
|
|
13
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
14
|
+
end
|
|
15
|
+
config.mock_with :rspec do |mocks|
|
|
16
|
+
mocks.verify_partial_doubles = true
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails_helper"
|
|
4
|
+
|
|
5
|
+
# Request spec for the existing GET /health endpoint.
|
|
6
|
+
# Drives the Rack app through the request layer (never binds a real port),
|
|
7
|
+
# exercising HealthController#show -> Health.status, plus a direct model
|
|
8
|
+
# assertion on the existing Health.status method.
|
|
9
|
+
RSpec.describe "Health", type: :request do
|
|
10
|
+
describe "GET /health" do
|
|
11
|
+
it "returns 200 with the ok status body" do
|
|
12
|
+
get "/health"
|
|
13
|
+
|
|
14
|
+
expect(response).to have_http_status(:ok)
|
|
15
|
+
expect(response.parsed_body).to eq("status" => "ok")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "Health.status" do
|
|
20
|
+
it "reports ok without touching HTTP" do
|
|
21
|
+
expect(Health.status).to eq(status: "ok")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Scaffold boundary for the rails stack.
|
|
2
|
+
# Schema: docs/governance/scaffold-boundary-contract.md
|
|
3
|
+
|
|
4
|
+
version: 1
|
|
5
|
+
stack: rails
|
|
6
|
+
|
|
7
|
+
roots:
|
|
8
|
+
- src/backend/
|
|
9
|
+
|
|
10
|
+
file_patterns:
|
|
11
|
+
- "src/backend/**/*.rb"
|
|
12
|
+
- "src/backend/**/*.ru"
|
|
13
|
+
- "src/backend/Gemfile"
|
|
14
|
+
|
|
15
|
+
imports_from:
|
|
16
|
+
- src/shared/
|
|
17
|
+
- src/shared/contracts/
|
|
18
|
+
|
|
19
|
+
forbids_writing_in:
|
|
20
|
+
- src/frontend/
|
|
21
|
+
- src/mobile/
|
|
22
|
+
|
|
23
|
+
notes:
|
|
24
|
+
- "Controllers thin (parse params, call the model, render); ActiveRecord models own business logic."
|
|
25
|
+
- "One rescue_from chain in ApplicationController is the only error-response shaper."
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rails
|
|
3
|
+
tier: stack
|
|
4
|
+
domain: [backend]
|
|
5
|
+
description: Use when creating or modifying Ruby files under src/backend/ in a Ruby on Rails service — controllers, ActiveRecord models, routes.rb, concerns, migrations, the rescue_from error chain, and their RSpec specs. Triggers on any .rb change under src/backend/. Covers thin controllers + strong parameters, model-owned business logic and validations, the single ApplicationController rescue_from error shaper, routes-as-table, concerns extraction, and request/model specs. Generic Ruby fundamentals live in clean-code.
|
|
6
|
+
globs: "src/backend/**/*.rb"
|
|
7
|
+
depends_on:
|
|
8
|
+
- clean-code
|
|
9
|
+
- backend-fundamentals
|
|
10
|
+
last_reviewed: "2026-06-14"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
REQUIRED BACKGROUND: This skill `depends_on: [clean-code, backend-fundamentals]`. `clean-code` gives universal code quality (fail-closed errors, typed exceptions, self-documenting code, error-path tests); `backend-fundamentals` gives stack-agnostic backend patterns (services, idempotency, envelopes, N+1, migrations, auth). This skill adds ONLY Ruby on Rails-specific layering on top.
|
|
14
|
+
|
|
15
|
+
# rails
|
|
16
|
+
|
|
17
|
+
## Layer contract (matches `structure.tree`)
|
|
18
|
+
|
|
19
|
+
| Layer | May import | Never |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `config/routes.rb` | route helpers | controller bodies, models |
|
|
22
|
+
| `*_controller.rb` | the domain model, concerns | another controller, raw SQL |
|
|
23
|
+
| `app/models/*.rb` (ActiveRecord) | other models, the DB | controllers, `params`, `render` |
|
|
24
|
+
| `controllers/concerns/` | models (for auth lookups) | a specific controller's privates |
|
|
25
|
+
|
|
26
|
+
Controllers stay thin and transport-aware; models stay transport-free (no
|
|
27
|
+
`params`, no `render`) so they are unit-testable and the business logic survives
|
|
28
|
+
a transport swap (REST → GraphQL → ActionCable).
|
|
29
|
+
|
|
30
|
+
## Routes & controllers (thin)
|
|
31
|
+
|
|
32
|
+
- `config/routes.rb` is the single routing table — prefer `resources`/`resource`
|
|
33
|
+
over hand-rolled `match`; one URL, one place.
|
|
34
|
+
- An action: strong-parameter the input (`params.require(:x).permit(:a, :b)`) →
|
|
35
|
+
call ONE model method → `render`. No business branching, no multi-query loops.
|
|
36
|
+
- Subclass `ApplicationController`; never rescue-and-shape inside an action — raise
|
|
37
|
+
a typed error and let the global chain map it.
|
|
38
|
+
- `before_action` filters load records / enforce auth; keep them in concerns when
|
|
39
|
+
three controllers share them (rule of three), not copy-pasted.
|
|
40
|
+
|
|
41
|
+
## Models (ActiveRecord — the only layer that thinks)
|
|
42
|
+
|
|
43
|
+
- Business logic, scopes, and `validates` live on the model; a controller that
|
|
44
|
+
validates by hand is a layering violation.
|
|
45
|
+
- Persist with `save!`/`create!`/`update!` so a failure raises and the
|
|
46
|
+
`rescue_from` chain maps it — silent `save` that returns `false` hides errors.
|
|
47
|
+
- Migrations are reversible (`change`, or paired `up`/`down`); schema and data
|
|
48
|
+
migrations stay in separate files. The agent writes them; the user runs `db:migrate`.
|
|
49
|
+
|
|
50
|
+
## Error handling
|
|
51
|
+
|
|
52
|
+
- ONE `rescue_from` chain in `ApplicationController` shapes every error response
|
|
53
|
+
(RFC 9457 problem shape per `docs/api-contracts/error-format.md`).
|
|
54
|
+
Unknown errors → 500 generic body, full detail to `logger` only — never a
|
|
55
|
+
backtrace or SQL to the client.
|
|
56
|
+
|
|
57
|
+
## Testing
|
|
58
|
+
|
|
59
|
+
- Models: unit specs per public method (no HTTP) with transactional fixtures.
|
|
60
|
+
- Controllers: RSpec request specs against the Rack app — one happy + one
|
|
61
|
+
error-path per endpoint minimum.
|
|
62
|
+
- Never bind a real server port in specs; drive the app through the request layer.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<!-- domain:RAILS | layer:reference | ssot:true | updated:2026-06-27 -->
|
|
2
|
+
# Rails Anatomy
|
|
3
|
+
|
|
4
|
+
> P: Canonical file map + entity recipes for the Rails (thin-controller, fat-model) API stack.
|
|
5
|
+
> R: Adding any `.rb` under `src/backend/`, or routing a backend task.
|
|
6
|
+
> S: Reading frontend / mobile code — wrong stack.
|
|
7
|
+
> N: [SKILL.md](../SKILL.md), [scaffold-boundary.yaml](../../../scaffold-boundary.yaml)
|
|
8
|
+
|
|
9
|
+
> Nav: [Skill](../SKILL.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Boundary
|
|
14
|
+
|
|
15
|
+
SSOT: `src/templates/rails/scaffold-boundary.yaml`.
|
|
16
|
+
|
|
17
|
+
## 2. Layout map
|
|
18
|
+
|
|
19
|
+
| Pattern | Location | Naming | Imports from | Description |
|
|
20
|
+
|---|---|---|---|---|
|
|
21
|
+
| Controller | `app/controllers/<domain>_controller.rb` | `<domain>_controller.rb` | its model | Thin — parse params, call model, render |
|
|
22
|
+
| Model | `app/models/<domain>.rb` | `<domain>.rb` | none | ActiveRecord — logic + validations |
|
|
23
|
+
| Concern | `app/controllers/concerns/<name>.rb` | `<name>.rb` | none | Cross-cutting mixin (auth, pagination) |
|
|
24
|
+
| Routes | `config/routes.rb` | `routes.rb` | controllers | The one routing table |
|
|
25
|
+
| Error shaper | `app/controllers/application_controller.rb` | — | none | `rescue_from` chain — the ONLY error shaper |
|
|
26
|
+
| Migration | `db/migrate/<ts>_<slug>.rb` | `<ts>_<slug>.rb` | none | Schema change, append-only |
|
|
27
|
+
| Test | `test/<type>/<name>_test.rb` | `<name>_test.rb` | source under test | Minitest / RSpec |
|
|
28
|
+
|
|
29
|
+
## 3. Entity recipes
|
|
30
|
+
|
|
31
|
+
### Add a new endpoint
|
|
32
|
+
- **Trigger:** "add `POST /<resource>`".
|
|
33
|
+
- **Files emitted:**
|
|
34
|
+
1. `app/controllers/<domain>_controller.rb`
|
|
35
|
+
2. route entry in `config/routes.rb`
|
|
36
|
+
- **Steps:**
|
|
37
|
+
1. Controller parses strong params, calls the model, renders JSON.
|
|
38
|
+
2. Errors bubble to the `rescue_from` chain in `ApplicationController`.
|
|
39
|
+
|
|
40
|
+
### Add a new model
|
|
41
|
+
- **Trigger:** "persist `<Entity>`".
|
|
42
|
+
- **Files emitted:**
|
|
43
|
+
1. `app/models/<domain>.rb`
|
|
44
|
+
2. `db/migrate/<ts>_create_<table>.rb`
|
|
45
|
+
- **Steps:**
|
|
46
|
+
1. Validations + business logic on the model; avoid N+1 with `includes`.
|
|
47
|
+
|
|
48
|
+
### Add a new migration
|
|
49
|
+
- **Trigger:** schema change.
|
|
50
|
+
- **Files emitted:** `db/migrate/<ts>_<slug>.rb`.
|
|
51
|
+
- **Steps:**
|
|
52
|
+
1. Append-only; reversible `change` or `up`/`down`.
|
|
53
|
+
|
|
54
|
+
### Add a new test
|
|
55
|
+
- **Trigger:** any new controller / model.
|
|
56
|
+
- **Files emitted:** `test/<type>/<name>_test.rb`.
|
|
57
|
+
- **Steps:**
|
|
58
|
+
1. Controller test hits the route (happy + error); model test per public method.
|
|
59
|
+
|
|
60
|
+
## 4. Conventions
|
|
61
|
+
|
|
62
|
+
#### Naming
|
|
63
|
+
- Files: `snake_case.rb`. Classes: `PascalCase`; methods: `snake_case`.
|
|
64
|
+
|
|
65
|
+
#### Test colocation
|
|
66
|
+
- Mirrored: `test/models/<name>_test.rb` mirrors `app/models/<name>.rb`.
|
|
67
|
+
|
|
68
|
+
#### Dependency rules
|
|
69
|
+
- ✓ controller → model; shared behavior via concerns.
|
|
70
|
+
- ✗ no business logic in controllers or routes.
|
|
71
|
+
- ✗ `src/backend/` never imports from `src/frontend/` / `src/mobile/` — share via `src/shared/`.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
id: rails
|
|
3
|
+
language: ruby
|
|
4
|
+
label: "Ruby on Rails"
|
|
5
|
+
category: backend
|
|
6
|
+
|
|
7
|
+
structure:
|
|
8
|
+
root: src/backend
|
|
9
|
+
tree: |
|
|
10
|
+
src/backend/
|
|
11
|
+
├── Gemfile
|
|
12
|
+
├── config.ru
|
|
13
|
+
├── config/
|
|
14
|
+
│ ├── application.rb # Rails app bootstrap (no logic)
|
|
15
|
+
│ └── routes.rb # the routing table — one place
|
|
16
|
+
└── app/
|
|
17
|
+
├── controllers/
|
|
18
|
+
│ ├── application_controller.rb # rescue_from lives here — the ONLY error shaper
|
|
19
|
+
│ └── <domain>_controller.rb # thin — parse params, call the model, render
|
|
20
|
+
├── models/<domain>.rb # ActiveRecord — business logic + validations
|
|
21
|
+
└── controllers/concerns/ # cross-cutting mixins (auth, pagination)
|
|
22
|
+
notes: "controllers thin (parse → call model → render); ActiveRecord models own logic + validations; ONE rescue_from chain in ApplicationController shapes every error; shared behavior in concerns"
|
|
23
|
+
primary_skill: rails
|
|
24
|
+
skills: [rails]
|
|
25
|
+
|
|
26
|
+
# These substitution keys are joined across stacks by the aggregator via
|
|
27
|
+
# _derive_substitutions (joined on " | "). VERIFY_BACKEND_* override the
|
|
28
|
+
# "(none)" defaults from base.yaml.
|
|
29
|
+
substitutions:
|
|
30
|
+
DOMAIN_ROUTES: "Backend→`docs/playbooks/rails-service.md`"
|
|
31
|
+
SKILL_ROUTES: "Backend→`rails`"
|
|
32
|
+
ENGINEERING_RULE_ROUTING: "Backend→`docs/engineering/rails-rules.md`, Error format→`docs/api-contracts/error-format.md`"
|
|
33
|
+
TOOL_ROUTING_IMPL: "`lint-backend`, `test-backend`"
|
|
34
|
+
VERIFY_BACKEND_GLOB: "`src/backend/`"
|
|
35
|
+
VERIFY_BACKEND_SUITES: "lint-backend + test-backend"
|
|
36
|
+
VERIFY_BACKEND: "`cd src/backend && bundle exec rubocop && bundle exec rspec`"
|
|
37
|
+
QUICK_ROUTING: |-
|
|
38
|
+
- Rails controller / route task → [Rails Service Playbook](./playbooks/rails-service.md)
|
|
39
|
+
- ActiveRecord model / migration → [Rails Service Playbook](./playbooks/rails-service.md)
|
|
40
|
+
STACK_REF_CODES: |-
|
|
41
|
+
- `REF:PLAYBOOK-RAILS` → `./playbooks/rails-service.md`
|
|
42
|
+
- `REF:RAILS-RULES` → `./engineering/rails-rules.md`
|
|
43
|
+
|
|
44
|
+
ref_codes:
|
|
45
|
+
- {code: "REF:PLAYBOOK-RAILS", path: "./playbooks/rails-service.md", desc: "Rails service playbook"}
|
|
46
|
+
- {code: "REF:RAILS-RULES", path: "./engineering/rails-rules.md", desc: "Rails engineering rules"}
|
|
47
|
+
|
|
48
|
+
routing_entries:
|
|
49
|
+
- "Rails controller / route task → [Rails Service Playbook](./playbooks/rails-service.md)"
|
|
50
|
+
|
|
51
|
+
rules:
|
|
52
|
+
- {file: rules/backend.md, globs: ["src/backend/**/*.rb"]}
|
|
53
|
+
|
|
54
|
+
makefile_targets:
|
|
55
|
+
- {name: lint-backend, cmd: "cd src/backend && bundle exec rubocop"}
|
|
56
|
+
- {name: test-backend, cmd: "cd src/backend && bundle exec rspec"}
|
|
57
|
+
|
|
58
|
+
verify:
|
|
59
|
+
- {glob: "src/backend/**/*.rb", suites: "lint-backend + test-backend", cmd: "cd src/backend && bundle exec rubocop && bundle exec rspec"}
|
|
60
|
+
|
|
61
|
+
dimensions:
|
|
62
|
+
- {name: "Rails controller", read_files: ["docs/playbooks/rails-service.md", "docs/engineering/rails-rules.md"]}
|
|
63
|
+
- {name: "ActiveRecord model", read_files: ["docs/engineering/rails-rules.md"]}
|
|
64
|
+
- {name: "Route / routes.rb", read_files: ["docs/engineering/rails-rules.md"]}
|
|
65
|
+
- {name: "Concern / mixin", read_files: ["docs/engineering/rails-rules.md"]}
|
|
66
|
+
- {name: "Migration / schema", read_files: ["docs/engineering/rails-rules.md", "docs/api-contracts/error-format.md"]}
|
|
67
|
+
- {name: "Auth / rescue_from", read_files: ["docs/engineering/rails-rules.md"]}
|
|
68
|
+
|
|
69
|
+
skill_enforcement:
|
|
70
|
+
- {globs: ["src/backend/**/*.rb"], primary: rails, secondary: [clean-code, backend-fundamentals, api-design, auth-patterns, security-web, testing-strategy, observability]}
|
|
71
|
+
- {globs: ["src/backend/**/models/**/*.rb", "src/backend/**/migrate/**/*.rb"], primary: rails, secondary: [clean-code, db-design, backend-fundamentals]}
|
|
72
|
+
- {globs: ["src/backend/**/controllers/concerns/auth*.rb", "src/backend/**/models/concerns/auth*.rb"], primary: rails, secondary: [auth-patterns, security-web, clean-code]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!-- domain:REACTNATIVE | layer:policy | ssot:true | updated:2026-04-29 -->
|
|
2
|
+
# React Native — stack rules
|
|
3
|
+
|
|
4
|
+
> P: Compact rule list applied to every `src/mobile/**/*.{ts,tsx}` file in addition to clean-code, frontend-fundamentals, and a11y.
|
|
5
|
+
> R: Reviewing or writing any mobile code.
|
|
6
|
+
> S: Touching the web frontend or backend.
|
|
7
|
+
> N: [skills/react-native-mobile/SKILL.md](../skills/react-native-mobile/SKILL.md), [skills/react-native-mobile/references/anatomy.md](../skills/react-native-mobile/references/anatomy.md)
|
|
8
|
+
|
|
9
|
+
## Hard rules
|
|
10
|
+
|
|
11
|
+
1. **Three-state UI.** Every data-fetching screen handles loading / error / empty / content explicitly.
|
|
12
|
+
2. **Worklets are pure.** Functions marked `'worklet'` MUST NOT call JS-thread APIs.
|
|
13
|
+
3. **No raw AsyncStorage.** Use `src/mobile/lib/storage.ts` so storage adapters can swap in tests.
|
|
14
|
+
4. **No hard-coded design tokens.** Read from `src/shared/contracts/design-tokens.ts`.
|
|
15
|
+
5. **a11y on every interactive element.** `accessibilityRole` + `accessibilityLabel` mandatory.
|
|
16
|
+
6. **Offline mutations queue.** User-mutating actions go through `src/mobile/sync/queue.ts` — never direct API calls during a write.
|
|
17
|
+
7. **Native bridges require an ADR.** No fork to Swift / Kotlin without `docs/architecture/adr/ADR-NNN-*.md`.
|
|
18
|
+
8. **Boundary.** May import from `src/shared/`. Never from `src/frontend/`, `src/backend/`, `src/ai-service/`.
|
|
19
|
+
|
|
20
|
+
## Pre-commit checklist
|
|
21
|
+
|
|
22
|
+
- [ ] Three-state branches present.
|
|
23
|
+
- [ ] No JS-thread call inside a `'worklet'` function.
|
|
24
|
+
- [ ] `accessibilityRole` set on every Pressable / Touchable.
|
|
25
|
+
- [ ] Imports respect `src/templates/react-native/scaffold-boundary.yaml`.
|
|
26
|
+
- [ ] Tests colocated and Given/When/Then.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<!-- domain:MOBILE | layer:reference | ssot:true | updated:2026-04-29 -->
|
|
2
|
+
# Mobile Accessibility (a11y) Checklist — WCAG 2.2 AA
|
|
3
|
+
|
|
4
|
+
> P: Per-screen / per-component a11y bar for every `src/mobile/**/*.{ts,tsx}` change. Tests with VoiceOver (iOS) AND TalkBack (Android).
|
|
5
|
+
> R: Reviewing or writing any interactive RN component.
|
|
6
|
+
> S: Touching pure backend / sync code with no UI surface.
|
|
7
|
+
> N: [mobile-rules.md](mobile-rules.md), [offline-first.md](offline-first.md), [../playbooks/mobile-app.md](../playbooks/mobile-app.md)
|
|
8
|
+
|
|
9
|
+
> Nav: [Docs Index](../00-index.md) | [Mobile Rules](./mobile-rules.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Interactive elements
|
|
14
|
+
|
|
15
|
+
- Every `Pressable` / `TouchableOpacity` / `Button` / icon-only tap target MUST set:
|
|
16
|
+
- `accessibilityRole` (`button` | `link` | `tab` | `header` | …)
|
|
17
|
+
- `accessibilityLabel` describing the action (no emoji-only labels)
|
|
18
|
+
- `accessibilityState` for stateful elements (`{ disabled, selected, checked, expanded }`)
|
|
19
|
+
- Tap targets MUST be ≥ 44×44 pt (iOS) / 48×48 dp (Android). Smaller surfaces wrap a larger `hitSlop`.
|
|
20
|
+
- Form fields MUST set `accessibilityLabel` when no visible label is present.
|
|
21
|
+
|
|
22
|
+
## 2. Dynamic announcements
|
|
23
|
+
|
|
24
|
+
- Use `AccessibilityInfo.announceForAccessibility(message)` for:
|
|
25
|
+
- Toast / banner-style state changes that have no visible focus.
|
|
26
|
+
- Async result toasts (sync queue success / failure).
|
|
27
|
+
- Live-region updates use `accessibilityLiveRegion="polite"` (Android) plus an explicit announce on iOS.
|
|
28
|
+
- Never auto-focus an element on screen mount unless it materially helps a screen-reader user.
|
|
29
|
+
|
|
30
|
+
## 3. Navigation + focus
|
|
31
|
+
|
|
32
|
+
- Use `accessibilityFocus()` on screen change ONLY when the user benefits — e.g. error recovery, modal open.
|
|
33
|
+
- Tab order follows visual reading order; never reorder via `accessibilityElementsHidden` for layout reasons.
|
|
34
|
+
- Modal-equivalent surfaces (`Modal`, bottom sheets) MUST set `accessibilityViewIsModal` (iOS) and trap focus.
|
|
35
|
+
- Provide a clear close affordance with `accessibilityLabel="Close"`.
|
|
36
|
+
|
|
37
|
+
## 4. Color + contrast
|
|
38
|
+
|
|
39
|
+
- Normal text (< 18 sp): contrast ratio ≥ 4.5:1.
|
|
40
|
+
- Large text (≥ 18 sp bold or ≥ 24 sp): ≥ 3:1.
|
|
41
|
+
- Interactive elements vs adjacent surfaces: ≥ 3:1.
|
|
42
|
+
- Focus / selection indicators: ≥ 3:1 against background.
|
|
43
|
+
- Theme-tested in both light AND dark modes.
|
|
44
|
+
|
|
45
|
+
## 5. Motion + animation
|
|
46
|
+
|
|
47
|
+
- Respect `useReduceMotion()` from `react-native-reanimated`. Disable parallax / hero animations when on.
|
|
48
|
+
- Auto-playing motion ≤ 5 s OR provide a pause control.
|
|
49
|
+
- Avoid flashing content > 3 Hz (seizure trigger).
|
|
50
|
+
|
|
51
|
+
## 6. Text + scaling
|
|
52
|
+
|
|
53
|
+
- Read user's font scale via `Appearance` / `PixelRatio.getFontScale()`. Layouts MUST tolerate up to 200%.
|
|
54
|
+
- Never set fixed heights on rows containing text — use min-height plus content-driven growth.
|
|
55
|
+
- Avoid `numberOfLines` clipping on critical info; prefer expandable sections.
|
|
56
|
+
|
|
57
|
+
## 7. Images + media
|
|
58
|
+
|
|
59
|
+
- All images carry `accessibilityLabel` OR `accessibilityRole="image"` with descriptive `alt`-equivalent.
|
|
60
|
+
- Decorative-only images: `accessible={false}` AND `importantForAccessibility="no"`.
|
|
61
|
+
- Video content carries captions OR a textual alternative.
|
|
62
|
+
|
|
63
|
+
## 8. Forms
|
|
64
|
+
|
|
65
|
+
- Labels associated to inputs via `accessibilityLabelledBy` (Android) / `accessibilityLabel` fallback.
|
|
66
|
+
- Error messages use `accessibilityLiveRegion="assertive"` (Android) + announceForAccessibility (iOS).
|
|
67
|
+
- Required fields announce required state.
|
|
68
|
+
|
|
69
|
+
## 9. Test discipline
|
|
70
|
+
|
|
71
|
+
- Manual: run every changed screen through VoiceOver AND TalkBack before merge.
|
|
72
|
+
- Automated: `axe-core/react-native` in unit tests for component-level a11y.
|
|
73
|
+
- E2E: Maestro flow uses `accessibilityLabel` selectors so a broken label fails the flow loudly.
|
|
74
|
+
|
|
75
|
+
## 10. Reference table
|
|
76
|
+
|
|
77
|
+
| Concern | iOS prop | Android prop |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| Role | `accessibilityRole` | `accessibilityRole` |
|
|
80
|
+
| Label | `accessibilityLabel` | `accessibilityLabel` |
|
|
81
|
+
| State | `accessibilityState` | `accessibilityState` |
|
|
82
|
+
| Hint | `accessibilityHint` | `accessibilityHint` |
|
|
83
|
+
| Live region | `accessibilityLiveRegion` (no-op) | `accessibilityLiveRegion` |
|
|
84
|
+
| Modal | `accessibilityViewIsModal` | (focus trap manual) |
|
|
85
|
+
| Hide from reader | `accessibilityElementsHidden` | `importantForAccessibility="no"` |
|
|
86
|
+
|
|
87
|
+
## 11. Pre-merge checklist
|
|
88
|
+
|
|
89
|
+
- [ ] Every interactive element has role + label + state where applicable.
|
|
90
|
+
- [ ] Tap target ≥ 44×44 pt / 48×48 dp.
|
|
91
|
+
- [ ] Color contrast verified (light + dark).
|
|
92
|
+
- [ ] Reduce-motion respected.
|
|
93
|
+
- [ ] VoiceOver smoke pass.
|
|
94
|
+
- [ ] TalkBack smoke pass.
|
|
95
|
+
- [ ] axe-core tests green.
|