@event4u/agent-config 10.2.0 → 10.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +168 -256
- package/README.md +1 -1
- package/dist/agent-src/commands/analyze/reference-repo.md +62 -0
- package/dist/agent-src/commands/analyze.md +2 -1
- package/dist/agent-src/commands/design-system/capture.md +44 -0
- package/dist/agent-src/commands/design-system/generate.md +53 -0
- package/dist/agent-src/commands/design-system/import.md +63 -0
- package/dist/agent-src/commands/design-system.md +66 -0
- package/dist/agent-src/commands/roadmap/create.md +4 -1
- package/dist/agent-src/personas/advisors/first-principles.md +6 -0
- package/dist/agent-src/rules/active-remediation.md +53 -2
- package/dist/agent-src/rules/code-provenance.md +66 -4
- package/dist/agent-src/rules/content-quoting-floor.md +6 -0
- package/dist/agent-src/rules/design-fidelity.md +49 -3
- package/dist/agent-src/skills/design-review/references/verification-automation.md +23 -1
- package/dist/agent-src/skills/design-system-capture/SKILL.md +9 -0
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +70 -0
- package/dist/agent-src/skills/fe-design/SKILL.md +27 -3
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +30 -0
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +11 -0
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +8 -8
- package/dist/agent-src/skills/skill-writing/SKILL.md +4 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/persona.md +26 -0
- package/dist/agent-src/templates/roadmaps.md +27 -7
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +4 -1
- package/dist/agent-src/templates/skill.md +35 -1
- package/dist/cli/commands/commands.candidates.test.js +257 -0
- package/dist/cli/commands/commands.candidates.test.js.map +1 -0
- package/dist/cli/commands/commands.js +199 -0
- package/dist/cli/commands/commands.js.map +1 -1
- package/dist/cli/main.js +1 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +1 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-E4RUZKXB.js → chunk-FV34EGEX.js} +1 -1
- package/dist/cli-delegate/chunk-RLN73PR5.js +157 -0
- package/dist/cli-delegate/{chunk-I5EAFRII.js → chunk-ZPSXJTLI.js} +2 -154
- package/dist/cli-delegate/cmd_conformance.js +672 -214
- package/dist/cli-delegate/cmd_doctor.js +1 -1
- package/dist/cli-delegate/cmd_handoff.js +8 -6
- package/dist/cli-delegate/cmd_session_recycle.js +5 -3
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +127 -22
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +9 -5
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +8 -4
- package/dist/hooks/dispatch.js +1056 -411
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1103 -593
- package/dist/router.json +1 -1
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +54 -0
- package/docs/guidelines/design-antipatterns.md +79 -10
- package/docs/guidelines/design-fidelity-mechanics.md +120 -2
- package/package.json +1 -1
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +4 -1
- package/src/config/gate-coverage.yml +65 -10
- package/src/config/gate-violation-baselines.json +6 -0
- package/src/config/review-prompt-binding-baseline.json +19 -0
- package/src/config/rule-enforcement-baseline.json +0 -1
- package/src/scripts/_dispatch.bash +1 -0
- package/src/scripts/_lib/design_system_import.ts +987 -0
- package/src/scripts/ai_council/clients.ts +15 -1
- package/src/scripts/check_ci_local_parity.ts +60 -6
- package/src/scripts/check_review_prompt_binding.ts +553 -0
- package/src/scripts/check_suppression_hygiene.ts +19 -3
- package/src/scripts/design_slop_rules.test.ts +37 -6
- package/src/scripts/design_slop_rules.ts +150 -22
- package/src/scripts/design_system_import.ts +264 -0
- package/src/scripts/dispatch_r2_reviewer.ts +15 -1
- package/src/scripts/hook_manifest.yaml +71 -2
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/dispatch_hook.ts +10 -0
- package/src/scripts/hooks/host_semantics.ts +2 -0
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +212 -0
- package/src/scripts/hooks/subagent_ledger_hook.ts +723 -0
- package/src/scripts/hooks/turn_end_gate_hook.ts +39 -2
- package/src/scripts/hooks/ui_route_nudge_hook.ts +55 -2
- package/src/scripts/lint_design_antipattern_parity.ts +201 -0
- package/src/scripts/lint_harvest_provenance.ts +483 -0
- package/src/scripts/lint_hook_manifest.ts +2 -0
- package/src/scripts/lint_rule_skill_pack_reach.ts +194 -13
- package/src/scripts/lint_skill_router_head.ts +254 -0
- package/src/scripts/report_consultation_rate.ts +126 -1
- package/src/scripts/run_skill_evals.ts +10 -5
- package/src/scripts/schemas/persona.schema.json +8 -0
- package/src/scripts/schemas/provenance-harvest.schema.json +39 -0
- package/src/scripts/sweep_dead_scan_roots.ts +51 -0
- package/tests/fixtures/hooks/subagent_start.json +7 -0
- package/tests/fixtures/hooks/subagent_stop.json +8 -0
package/dist/router.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schema_version":2,"kernel":["agent-authority","ask-when-uncertain","commit-policy","direct-answers","language-and-tone","no-cheap-questions","non-destructive-by-default","scope-control","verify-before-complete"],"tier_1":[{"id":"architecture","triggers":[{"keyword":"controller"},{"keyword":"service"},{"keyword":"module"}],"routes_to":["skill:module-detect-on-the-fly"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"artifact-engagement-recording","triggers":[{"phrase":"/implement-ticket"},{"phrase":"/work"},{"keyword":"telemetry"}],"routes_to":["contract:artifact-engagement-flow"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"autonomous-execution","triggers":[{"keyword":"personal.autonomy"},{"phrase":"autonomy mode"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"command-suggestion-policy","triggers":[{"phrase":"free-form prompt"},{"phrase":"command suggestion"}],"routes_to":["contract:command-suggestion-flow"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"context-hygiene","triggers":[{"keyword":"3-failure"},{"phrase":"long conversation"}],"routes_to":["guideline:agent-infra/context-hygiene-mechanics"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"copilot-routing","triggers":[{"keyword":"copilot"},{"phrase":"copilot-instructions"},{"phrase":"copilot pr review"}],"routes_to":["skill:copilot-config"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"devcontainer-routing","triggers":[{"keyword":"devcontainer"},{"keyword":"codespaces"},{"keyword":"codespace"},{"phrase":"devcontainer.json"}],"routes_to":["skill:devcontainer"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"docker-commands","triggers":[{"keyword":"docker"},{"keyword":"artisan"},{"keyword":"composer"},{"phrase":"inside the container"}],"routes_to":["skill:docker"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"fast-path-marker-visibility","triggers":[{"keyword":"low-impact council"},{"keyword":"fast-path"},{"keyword":"Resolved via low-impact council"},{"keyword":"low_impact"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"laravel-routing","triggers":[{"keyword":"laravel"},{"keyword":"artisan"},{"keyword":"eloquent"},{"keyword":"FormRequest"}],"routes_to":["skill:laravel"],"workspaces":["engineering"],"packs":["laravel"]},{"id":"low-impact-corpus-privacy-floor","triggers":[{"path_prefix":"agents/decisions/low-impact-decisions"},{"keyword":"low-impact-decisions"},{"keyword":"low-impact corpus"},{"keyword":"learn-low-impact"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"no-attribution-footers","triggers":[{"keyword":"co-authored"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"no-decorative-emojis-in-git-surfaces","triggers":[{"keyword":"gh pr create"},{"keyword":"git commit"},{"keyword":"🤖"},{"keyword":"🚀"},{"keyword":"🎉"},{"keyword":"✨"},{"keyword":"🔥"},{"keyword":"💡"},{"keyword":"👍"},{"keyword":"❤️"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"no-roadmap-references","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"agents/runtime/council/questions/"},{"path_prefix":"agents/runtime/council/responses/"},{"path_prefix":"agents/runtime/council/sessions/"}],"routes_to":["skill:agent-docs-writing","skill:ai-council"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"onboarding-gate","triggers":[{"phrase":"first turn"},{"keyword":"onboarding"},{"path_prefix":".agent-settings.yml"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"php-coding","triggers":[{"file_pattern":"*.php"},{"keyword":"phpstan"},{"keyword":"ecs"}],"routes_to":["guideline:php/php-coding-patterns"],"workspaces":["engineering"],"packs":["php"]},{"id":"question-not-instruction","triggers":[{"phrase":"warum"},{"phrase":"wieso"},{"phrase":"weshalb"},{"keyword":"why"},{"phrase":"what do you think"},{"phrase":"was denkst du"},{"phrase":"was hältst du"},{"phrase":"geht das"},{"phrase":"kannst du"},{"phrase":"sollte ich"},{"phrase":"should i"},{"phrase":"is it possible"}],"routes_to":[],"workspaces":["engineering"],"packs":["meta"]},{"id":"roadmap-progress-sync","triggers":[{"path_prefix":"agents/roadmaps/"},{"command":"/roadmap:process-step"},{"command":"/roadmap:process-phase"},{"command":"/roadmap:process-full"}],"routes_to":["guideline:agent-infra/roadmap-progress-mechanics"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"skill-quality","triggers":[{"path_prefix":"src/skills/"}],"routes_to":["guideline:agent-infra/skill-quality-checklist"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"slash-command-routing-policy","triggers":[{"keyword":"/create-pr"},{"keyword":"/commit"},{"keyword":"/fix-ci"},{"phrase":"slash command"}],"routes_to":["skill:command-routing"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"source-confidentiality","triggers":[{"path_prefix":"src/skills/"},{"path_prefix":"src/rules/"},{"path_prefix":"src/domains/"},{"path_prefix":"docs/"},{"path_prefix":"agents/evidence/"},{"path_prefix":"agents/roadmaps/"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"source-of-truth","triggers":[{"path_prefix":"dist/agent-src/"},{"path_prefix":".augment/"},{"path_prefix":".claude/"},{"path_prefix":".cursor/"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"symfony-routing","triggers":[{"keyword":"symfony"},{"keyword":"doctrine"},{"keyword":"twig"},{"keyword":"messenger"}],"routes_to":["skill:symfony-workflow"],"workspaces":["engineering"],"packs":["symfony"]},{"id":"user-interaction","triggers":[{"keyword":"option"},{"keyword":"recommendation"},{"phrase":"what do you recommend"},{"phrase":"was empfiehlst du"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]}],"tier_2":[{"id":"active-remediation","triggers":[{"keyword":"refactor"},{"keyword":"duplicate"},{"keyword":"legacy"},{"keyword":"deprecated"},{"keyword":"modernize"},{"keyword":"upgrade"},{"keyword":"cleanup"},{"keyword":"technical debt"}],"routes_to":["guideline:agent-infra/active-remediation-mechanics"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"artifact-drafting-protocol","triggers":[{"phrase":"new skill"},{"phrase":"new rule"},{"phrase":"new command"},{"phrase":"new guideline"},{"phrase":"neue Regel"},{"phrase":"bau mir ein Skill"}],"routes_to":["guideline:agent-infra/artifact-drafting-protocol-mechanics"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"augment-edit-discipline","triggers":[{"path_prefix":".augment/"},{"path_prefix":"src/"},{"keyword":"portable"},{"keyword":"rename"},{"keyword":"delete"}],"routes_to":["guideline:augment-portability-patterns","skill:agent-docs-writing"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"brand-source-of-truth","triggers":[{"keyword":"brand"},{"keyword":"on-brand"},{"keyword":"off-brand"},{"keyword":"brand tokens"},{"keyword":"brand voice"},{"keyword":"brand guide"},{"keyword":"brand profile"},{"phrase":"brand consistency"},{"phrase":"on brand"},{"phrase":"brand source of truth"}],"routes_to":[],"workspaces":["engineering"],"packs":["brand"]},{"id":"broken-access-control","triggers":[{"keyword":"endpoint"},{"keyword":"route"},{"keyword":"authorization"},{"keyword":"tenant"},{"keyword":"IDOR"},{"keyword":"session"},{"keyword":"login"},{"keyword":"controller"},{"keyword":"findById"}],"routes_to":["skill:authz-review","skill:multi-tenancy","skill:threat-modeling"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"cli-output-handling","triggers":[{"keyword":"git"},{"keyword":"phpstan"},{"keyword":"rector"},{"keyword":"phpunit"},{"keyword":"composer"},{"keyword":"npm"},{"keyword":"pnpm"},{"keyword":"yarn"},{"keyword":"eslint"},{"keyword":"tsc"},{"keyword":"vitest"},{"keyword":"jest"},{"keyword":"pytest"},{"keyword":"ruff"},{"keyword":"mypy"},{"keyword":"pyright"},{"keyword":"cargo"},{"keyword":"golangci-lint"},{"keyword":"docker"},{"keyword":"kubectl"},{"keyword":"terraform"},{"phrase":"go test"},{"phrase":"go build"}],"routes_to":["skill:rtk-output-filtering"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"code-comment-discipline","triggers":[{"keyword":"comment"},{"keyword":"docblock"},{"keyword":"phpdoc"},{"keyword":"jsdoc"},{"keyword":"docstring"},{"keyword":"implement"},{"keyword":"class"},{"keyword":"method"},{"keyword":"refactor"}],"routes_to":["guideline:code-clarity"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"code-provenance","triggers":[{"keyword":"port this"},{"keyword":"adapt this"},{"keyword":"based on this repo"},{"keyword":"similar implementation"},{"keyword":"found this on GitHub"},{"keyword":"borrow"},{"keyword":"vendored"},{"keyword":"reference implementation"}],"routes_to":["skill:license-compliance-audit","skill:license-compliance-borrow-check","skill:license-compliance-credits"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"commit-conventions","triggers":[{"keyword":"commit"},{"keyword":"branch"},{"phrase":"conventional commits"}],"routes_to":["skill:conventional-commits-writing"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"communication-through-line","triggers":[{"phrase":"reporting progress"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"content-quoting-floor","triggers":[{"keyword":"quote"},{"keyword":"excerpt"},{"keyword":"verbatim"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"council-availability","triggers":[{"keyword":"council"},{"keyword":"ai council"},{"keyword":"ai-council"},{"keyword":"council:status"},{"keyword":"second opinion"},{"phrase":"cross-check with another model"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"cross-source-consistency","triggers":[{"keyword":"ticket"},{"keyword":"refine"},{"keyword":"acceptance criteria"},{"keyword":"mockup"},{"keyword":"screenshot"},{"keyword":"attachment"},{"keyword":"roadmap"},{"keyword":"estimate"},{"phrase":"plan this ticket"},{"phrase":"refine this ticket"},{"phrase":"is this ticket clear"},{"phrase":"implement the ticket"}],"routes_to":["guideline:agent-infra/cross-source-consistency-mechanics"],"workspaces":["engineering","product"],"packs":["engineering-base","product-basic"]},{"id":"decision-revisit-gate","triggers":[{"keyword":"don't relitigate"},{"keyword":"honest null"},{"keyword":"already decided"},{"keyword":"locked decision"},{"keyword":"budget blocks"}],"routes_to":["skill:decision-review"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"delegation-policy","triggers":[{"keyword":"delegate"},{"keyword":"orchestrate"},{"keyword":"subagent"},{"keyword":"parallel"},{"phrase":"review these"},{"phrase":"analyze the codebase"},{"phrase":"for each"},{"keyword":"analyse"},{"keyword":"analyze"}],"routes_to":["skill:subagent-orchestration"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"design-fidelity","triggers":[{"keyword":"prototype"},{"keyword":"mockup"},{"keyword":"wireframe"},{"keyword":"design system"},{"keyword":"design spec"},{"keyword":"Figma"},{"keyword":"handoff"},{"keyword":"Claude Design"},{"phrase":"match the design"},{"phrase":"build this design"},{"phrase":"design fidelity"},{"phrase":"stick to the design"},{"phrase":"design.html"},{"phrase":"attached artifact"},{"phrase":"provided artifact"},{"phrase":"übernimm das design"},{"phrase":"baue das nach"},{"phrase":"bau das nach"},{"phrase":"1:1 um"},{"phrase":"1:1 nach"},{"phrase":"claude.site/artifacts"},{"file_pattern":"*design.html"},{"path_prefix":".claude/design-system/"}],"routes_to":["guideline:design-fidelity-mechanics"],"workspaces":["engineering"],"packs":["engineering-base","frontend-design"]},{"id":"design-review-after-ui-write","triggers":[{"path_prefix":"resources/views/"},{"path_prefix":"resources/js/"},{"path_prefix":"components/"},{"path_prefix":"src/components/"},{"path_prefix":"pages/"},{"file_pattern":"*.vue"},{"file_pattern":"*.svelte"},{"file_pattern":"*.tsx"},{"file_pattern":"*.jsx"},{"file_pattern":"*.blade.php"},{"keyword":"component"},{"keyword":"design token"}],"routes_to":["skill:accessibility-auditor","skill:design-review"],"workspaces":["agent-config-maintainer","engineering"],"packs":["frontend-design"]},{"id":"doc-screenshot-hygiene","triggers":[{"keyword":"screenshot"},{"keyword":"screenshots"},{"keyword":"screen capture"},{"keyword":"screen grab"},{"keyword":"admin panel screenshot"},{"keyword":"dashboard screenshot"},{"keyword":"docs site"},{"keyword":"Starlight"},{"phrase":"add a screenshot"},{"phrase":"screenshot for the docs"},{"phrase":"screenshot in the readme"},{"phrase":"embed an image in the docs"},{"phrase":"put a screenshot"},{"phrase":"generate a docs site"},{"phrase":"capture the ui"},{"path_prefix":"docs/media/"}],"routes_to":["skill:screenshot-hygiene"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"domain-adoption-policy","triggers":[{"keyword":"mobile track"},{"keyword":"ml track"},{"keyword":"blockchain track"},{"path_prefix":"src/skills/"}],"routes_to":["guideline:agent-infra/domain-adoption-gates"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"domain-safety-disclaimer","triggers":[{"keyword":"legal brief"},{"keyword":"contract redline"},{"keyword":"terms of service"},{"keyword":"privacy policy"},{"keyword":"diagnosis"},{"keyword":"symptoms"},{"keyword":"dosage"},{"keyword":"medication"},{"keyword":"investment memo"},{"keyword":"tax position"},{"keyword":"strategic recommendation"},{"keyword":"board memo"},{"keyword":"executive summary"},{"phrase":"review this contract"},{"phrase":"is this symptom"},{"phrase":"should I invest"},{"phrase":"what should we do"}],"routes_to":["skill:brand-identity","skill:brand-strategy","skill:contracts-cognition","skill:dcf-modeling","skill:decision-record","skill:privacy-review","skill:scenario-modeling","skill:stakeholder-tradeoff"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"domain-safety-pii","triggers":[{"keyword":"support macro"},{"keyword":"ticket response"},{"keyword":"help desk"},{"keyword":"Zendesk"},{"keyword":"Intercom"},{"keyword":"testimonial"},{"keyword":"case study"},{"keyword":"customer story"},{"keyword":"candidate"},{"keyword":"interview notes"},{"keyword":"scorecard"},{"keyword":"rejection email"},{"keyword":"offer letter"},{"keyword":"invoice"},{"keyword":"accounts receivable"},{"keyword":"accounts payable"},{"keyword":"finance memo"},{"keyword":"log"},{"keyword":"logger"},{"keyword":"Sentry"},{"keyword":"Datadog"},{"keyword":"structured log"},{"keyword":"export to CSV"},{"keyword":"data export"},{"keyword":"partner integration"},{"phrase":"draft a response to"},{"phrase":"marketing email featuring"},{"phrase":"draft feedback for"},{"phrase":"log the user"},{"phrase":"send them the spreadsheet"}],"routes_to":["skill:data-handling-judgment","skill:logging-monitoring","skill:privacy-review","skill:secrets-management"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"domain-safety-retention","triggers":[{"keyword":"retention policy"},{"keyword":"data retention"},{"keyword":"record retention"},{"keyword":"ticket retention"},{"keyword":"CRM retention"},{"keyword":"delete financial"},{"keyword":"purge invoice"},{"keyword":"DSAR"},{"keyword":"data subject request"},{"keyword":"right to be forgotten"},{"phrase":"how long should we keep"},{"phrase":"when can we delete"},{"phrase":"delete customer data"},{"phrase":"how long do we keep tickets"}],"routes_to":["skill:data-handling-judgment","skill:privacy-review"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"downstream-changes","triggers":[{"keyword":"callers"},{"keyword":"imports"},{"keyword":"downstream"},{"phrase":"api changed"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"engineering-safety-floor","triggers":[{"keyword":"production"},{"keyword":"deploy"},{"keyword":"migration"},{"keyword":"schema change"},{"keyword":"DROP TABLE"},{"keyword":"TRUNCATE"},{"keyword":"force push"},{"keyword":"rebase main"},{"keyword":"rollback"},{"keyword":"secrets rotation"},{"keyword":"IAM"},{"keyword":"DNS"},{"keyword":"terraform apply"},{"keyword":"kubectl apply"},{"phrase":"ship to prod"},{"phrase":"deploy to production"},{"phrase":"merge to main"},{"phrase":"release this"}],"routes_to":["skill:launch-readiness","skill:threat-modeling"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"evaluator-independence","triggers":[{"keyword":"blind review"},{"keyword":"blind pass"},{"keyword":"honest null"},{"keyword":"no-findings"},{"keyword":"adversarial review"},{"keyword":"judge"},{"phrase":"review my own"},{"phrase":"commission a review"},{"phrase":"second opinion on my"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"external-code-graph-interop","triggers":[{"keyword":"scip"},{"keyword":"code-graph"},{"keyword":"code graph"},{"phrase":"graph.json"},{"phrase":"who calls"},{"phrase":"call graph"},{"phrase":"find references"},{"phrase":"where is this used"}],"routes_to":[],"workspaces":["engineering"],"packs":["meta"]},{"id":"external-reference-deep-dive","triggers":[{"keyword":"github.com/"},{"keyword":"source of truth"},{"phrase":"reference repo"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"finance-safety-floor","triggers":[{"keyword":"runway"},{"keyword":"burn"},{"keyword":"valuation"},{"keyword":"DCF"},{"keyword":"IRR"},{"keyword":"MOIC"},{"keyword":"LTV"},{"keyword":"payback"},{"keyword":"sensitivity"},{"keyword":"fundraise"},{"keyword":"term sheet"},{"keyword":"dilution"},{"keyword":"NRR"},{"keyword":"EBITDA"},{"keyword":"free cash flow"},{"phrase":"what's it worth"},{"phrase":"how long do we have"},{"phrase":"should we raise"},{"phrase":"model the scenarios"}],"routes_to":["skill:dcf-modeling","skill:forecasting","skill:runway-cognition","skill:scenario-modeling","skill:unit-economics-modeling"],"workspaces":["finance"],"packs":["finance-advanced","finance-basic"]},{"id":"framework-neutrality-in-generic-skills","triggers":[{"path_prefix":"src/skills/"},{"path_prefix":"src/rules/"},{"path_prefix":"src/agent-src/commands/"},{"keyword":"FormRequest"},{"keyword":"PHPStan"},{"keyword":"php artisan"},{"keyword":"composer.json"},{"keyword":"Eloquent"},{"keyword":"Pest"},{"keyword":"Blade"},{"keyword":"vendor/bin"},{"keyword":"Artisan"},{"keyword":"Rector"},{"phrase":"every controller"},{"phrase":"all controllers"},{"phrase":"generic skill"}],"routes_to":["guideline:agent-infra/framework-neutrality-patterns"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"git-history-discipline","triggers":[{"keyword":"git rebase"},{"keyword":"rebase --onto"},{"keyword":"reset --hard"},{"keyword":"fixup"},{"keyword":"--amend"},{"keyword":"force-push"},{"keyword":"--force-with-lease"},{"keyword":"squash-merge"},{"phrase":"branch diverged"},{"phrase":"pull --rebase failed"},{"phrase":"ahead and behind"},{"phrase":"unexpected commits on the branch"},{"phrase":"commits I did not create"}],"routes_to":["skill:git-workflow"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"history-discipline","triggers":[{"keyword":"audit"},{"keyword":"audit log"},{"keyword":"activity log"},{"keyword":"history"},{"keyword":"event sourcing"},{"keyword":"changelog"},{"phrase":"who changed"},{"phrase":"wer hat was"},{"phrase":"track changes"},{"phrase":"change history"}],"routes_to":["skill:history-design"],"workspaces":["engineering"],"packs":["history-discipline"]},{"id":"icon-consistency","triggers":[{"keyword":"icon"},{"keyword":"iconography"},{"keyword":"lucide"},{"keyword":"heroicons"},{"keyword":"icon set"},{"phrase":"icon system"}],"routes_to":[],"workspaces":["engineering"],"packs":["frontend-design"]},{"id":"image-likeness-and-rights","triggers":[{"keyword":"/image:"},{"keyword":"image generation"},{"keyword":"generate an image"},{"keyword":"logo"},{"keyword":"likeness"},{"keyword":"trademark"},{"keyword":"brand mark"},{"path_prefix":"scripts/ai-image/adapters/"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-image"]},{"id":"improve-before-implement","triggers":[{"keyword":"refactor"},{"keyword":"implement"},{"keyword":"migration"}],"routes_to":["guideline:agent-infra/agent-interaction-and-decision-quality"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"invite-challenge","triggers":[{"keyword":"plan"},{"keyword":"design"},{"keyword":"architecture"},{"keyword":"approach"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"laravel-translations","triggers":[{"path_prefix":"lang/"},{"keyword":"translation"},{"keyword":"__()"},{"keyword":"trans("}],"routes_to":["skill:laravel"],"workspaces":["engineering"],"packs":["laravel"]},{"id":"legal-safety-floor","triggers":[{"keyword":"NDA"},{"keyword":"DPA"},{"keyword":"data processing agreement"},{"keyword":"contract review"},{"keyword":"redline"},{"keyword":"clause"},{"keyword":"GDPR"},{"keyword":"Art. 28"},{"keyword":"controller"},{"keyword":"processor"},{"keyword":"privilege"},{"keyword":"work product"},{"phrase":"review this contract"},{"phrase":"is this a legal problem"},{"phrase":"check this NDA"}],"routes_to":["skill:contract-review","skill:dpa-review","skill:legal-intake-triage","skill:nda-triage"],"workspaces":["legal-review-prep"],"packs":["legal-review-prep"]},{"id":"lethal-trifecta-guard","triggers":[{"path_prefix":"src/skills/"},{"path_prefix":"src/agent-src/commands/"},{"keyword":"lethal trifecta"},{"keyword":"untrusted content"},{"keyword":"exfiltration"},{"keyword":"data exfil"},{"phrase":"fetch and send"},{"phrase":"read the file and post"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"linked-projects-onboarding-gate","triggers":[{"keyword":"linked project"},{"keyword":"cross-repo"},{"keyword":"sibling repo"},{"path_prefix":".idea/modules.xml"},{"path_prefix":".idea/vcs.xml"}],"routes_to":["guideline:agent-infra/linked-projects-onboarding-gate"],"workspaces":["agent-config-maintainer","engineering"],"packs":["engineering-base"]},{"id":"markdown-safe-codeblocks","triggers":[{"keyword":"triple backticks"},{"file_pattern":"*.md"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"media-governance-routing","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"deepfake"},{"keyword":"voice clone"},{"keyword":"voice cloning"},{"keyword":"likeness"},{"keyword":"brand impersonation"},{"phrase":"in the style of"},{"phrase":"in the voice of"},{"phrase":"as [public figure]"},{"phrase":"impersonate"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-image","ai-video"]},{"id":"media-sync-ground-truth","triggers":[{"keyword":"lip-sync"},{"keyword":"lip sync"},{"keyword":"lipsync"},{"keyword":"music video"},{"keyword":"beat-cut"},{"keyword":"/video:from-song"},{"keyword":"vocal map"},{"phrase":"cut to the beat"},{"phrase":"sing the"},{"phrase":"mit den lippen"},{"phrase":"lippen passend"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-video"]},{"id":"minimal-safe-diff","triggers":[{"keyword":"drive-by"},{"keyword":"rewrite"},{"keyword":"fix"},{"phrase":"from scratch"},{"phrase":"second system"}],"routes_to":["guideline:agent-infra/minimal-safe-diff-mechanics"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"missing-tool-handling","triggers":[{"keyword":"command not found"},{"keyword":"not installed"}],"routes_to":["guideline:agent-infra/missing-tool-handling"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"model-recommendation","triggers":[{"phrase":"switch task"},{"phrase":"new task"},{"phrase":"which model"},{"keyword":"model_tier"}],"routes_to":["guideline:agent-infra/model-recommendation"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"no-pr-progress-comments","triggers":[{"keyword":"gh pr comment"},{"keyword":"PullRequestComment"},{"phrase":"status comment"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"notes-first-reasoning","triggers":[{"keyword":"debug"},{"keyword":"investigate"},{"keyword":"hypothesis"},{"keyword":"root cause"},{"phrase":"figure out why"},{"phrase":"should we use"}],"routes_to":["skill:memory-consolidation"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"output-discipline","triggers":[{"keyword":"// rest of component"},{"keyword":"for brevity"},{"keyword":"rest follows the same pattern"},{"phrase":"similar pattern"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"persona-governance","triggers":[{"path_prefix":"src/agent-src/personas/"},{"path_prefix":"dist/agent-src/personas/"},{"keyword":"persona"},{"keyword":"personas"},{"phrase":"new persona"},{"phrase":"add a persona"},{"phrase":"specialist persona"},{"phrase":"review lens"}],"routes_to":["contract:persona-schema"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"prefer-enums-over-literals","triggers":[{"keyword":"enum"},{"keyword":"status"},{"keyword":"kind"},{"keyword":"category"},{"keyword":"migration"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"preservation-guard","triggers":[{"keyword":"Iron Law"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"provider-lifecycle-discipline","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"ai-video"},{"keyword":"ai-image"},{"keyword":"ai-audio"},{"keyword":"adapter"},{"keyword":"provider"},{"path_prefix":"scripts/ai-video/adapters/"},{"path_prefix":"scripts/ai-image/adapters/"},{"path_prefix":"scripts/media/lib/"},{"path_prefix":"agents/.ai-video.xml"},{"phrase":"lifecycle"},{"phrase":"default provider"}],"routes_to":["contract:provider-lifecycle"],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-image","ai-video"]},{"id":"reviewer-awareness","triggers":[{"keyword":"reviewer"},{"phrase":"suggest reviewers"},{"phrase":"risk hotspot"},{"phrase":"ownership map"},{"phrase":"review this pr"}],"routes_to":["skill:review-routing"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"roadmap-ci-steps-policy","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"{module_root}/"},{"keyword":"task ci"},{"keyword":"make test"},{"keyword":"npm run check"},{"keyword":"pnpm run check"},{"keyword":"yarn check"},{"keyword":"composer test"},{"phrase":"run the quality pipeline"},{"phrase":"run task ci"},{"phrase":"run the full ci"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"role-mode-adherence","triggers":[{"keyword":"active_role"},{"keyword":"role-mode"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"rule-type-governance","triggers":[{"path_prefix":"src/rules/"}],"routes_to":["guideline:agent-infra/rule-type-governance"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"runtime-safety","triggers":[{"keyword":"execution"},{"keyword":"automated"},{"keyword":"assisted"},{"keyword":"handler"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"scale-discipline","triggers":[{"keyword":"migration"},{"keyword":"index"},{"keyword":"N+1"},{"keyword":"eager load"},{"keyword":"pagination"},{"keyword":"queue"},{"keyword":"job"},{"keyword":"retention"},{"keyword":"schema"},{"keyword":"SELECT *"},{"phrase":"will this scale"},{"phrase":"review this migration"},{"phrase":"add a table"},{"phrase":"send an email on"}],"routes_to":["skill:schema-review"],"workspaces":["engineering"],"packs":["scale-discipline"]},{"id":"secret-vcs-guard","triggers":[{"keyword":"secret"},{"keyword":"password"},{"keyword":"credential"},{"keyword":"api key"},{"keyword":"token"},{"keyword":".env"},{"keyword":"commit"},{"keyword":"git add"},{"keyword":"svn commit"},{"keyword":"hg commit"},{"keyword":"push"}],"routes_to":["skill:secrets-management"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"security-sensitive-stop","triggers":[{"keyword":"auth"},{"keyword":"billing"},{"keyword":"tenant"},{"keyword":"webhook"},{"keyword":"oauth"},{"keyword":"signing key"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"self-repair-loop","triggers":[{"keyword":"self-repair"},{"keyword":"self-repair-queue"},{"phrase":"nicht richtig gearbeitet"},{"phrase":"du hast das falsch"},{"phrase":"you ignored the rule"},{"phrase":"that was wrong"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"senior-engineering-discipline","triggers":[{"keyword":"implement"},{"keyword":"endpoint"},{"keyword":"query"},{"keyword":"migration"},{"keyword":"component"},{"keyword":"seeder"},{"keyword":"dependency"},{"keyword":"refactor"}],"routes_to":["skill:ai-code-blindspots","skill:frontend-render-security","skill:supply-chain-intake","skill:testing-anti-patterns"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"session-canary","triggers":[{"keyword":"canary"},{"keyword":"canary_name"},{"phrase":"session canary"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"settings-ask-protocol","triggers":[{"keyword":"settings:set"},{"keyword":"canary_name"},{"keyword":"rich_skills"},{"keyword":"adversarial_council"},{"keyword":"learn_on_session_end"},{"keyword":"open_edited_files"},{"phrase":"ask about a setting"},{"phrase":"settings question"},{"phrase":"should I enable"},{"phrase":"nickname"},{"path_prefix":"docs/contracts/settings-classes.md"}],"routes_to":["contract:settings-classes"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"skill-improvement-trigger","triggers":[{"phrase":"after completing"},{"keyword":"improvement"},{"keyword":"pipeline"}],"routes_to":["skill:skill-improvement-pipeline"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"source-discovery-gate","triggers":[{"keyword":"schema"},{"keyword":"endpoint"},{"phrase":"new API"},{"phrase":"unknown API"},{"phrase":"new vendor package"},{"phrase":"which fields"}],"routes_to":["skill:source-discovery"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"spreadsheet-source-quality","triggers":[{"keyword":"financial data"},{"keyword":"financial model"},{"keyword":"stock price"},{"keyword":"revenue figures"},{"keyword":"market data"},{"phrase":"pull the numbers"}],"routes_to":[],"workspaces":["finance"],"packs":["finance-basic"]},{"id":"strategy-safety-floor","triggers":[{"keyword":"vision"},{"keyword":"positioning"},{"keyword":"moat"},{"keyword":"competitive"},{"keyword":"market entry"},{"keyword":"OKR"},{"keyword":"build vs buy"},{"keyword":"buy vs partner"},{"keyword":"beachhead"},{"keyword":"GTM"},{"keyword":"category"},{"keyword":"where to play"},{"keyword":"where not to play"},{"phrase":"what's our strategy"},{"phrase":"should we enter"},{"phrase":"what's our moat"},{"phrase":"where should we focus"},{"phrase":"should we reorg"}],"routes_to":["skill:build-buy-partner","skill:competitive-moat-analysis","skill:market-entry-analysis","skill:okr-tree-modeling","skill:positioning-strategy","skill:vision-articulation"],"workspaces":["founder"],"packs":["founder-strategy"]},{"id":"think-before-action","triggers":[{"phrase":"before coding"},{"phrase":"before debugging"},{"phrase":"before modifying"},{"keyword":"implement"},{"keyword":"debug"},{"keyword":"refactor"},{"keyword":"fix"},{"keyword":"optimize"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"token-budget-discipline","triggers":[{"keyword":"token_budget_class"},{"keyword":"rich skill"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"token-efficiency","triggers":[{"keyword":"minimize tool calls"},{"phrase":"fetching logs"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"token-optimizer-maintenance","triggers":[{"keyword":"cli-output-handling"},{"keyword":"rtk-output-filtering"},{"keyword":"token-efficiency"},{"keyword":"agent-handoff"},{"keyword":"markitdown"},{"keyword":"token-optimizer"}],"routes_to":["skill:token-optimizer"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"tool-safety","triggers":[{"keyword":"allowed_tools"},{"keyword":"tool registry"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"ui-audit-gate","triggers":[{"path_prefix":"resources/views/"},{"path_prefix":"resources/js/"},{"path_prefix":"components/"},{"path_prefix":"src/components/"},{"path_prefix":"pages/"},{"file_pattern":"*.vue"},{"file_pattern":"*.svelte"},{"file_pattern":"*.tsx"},{"file_pattern":"*.jsx"},{"file_pattern":"*.blade.php"},{"keyword":"component"},{"keyword":"design token"}],"routes_to":["skill:existing-ui-audit","skill:iconography","skill:typography-system"],"workspaces":["agent-config-maintainer","engineering"],"packs":["frontend-design"]},{"id":"untrusted-input-defense","triggers":[{"keyword":"untrusted"},{"keyword":"fetched content"},{"keyword":"tool output"},{"keyword":"web page"},{"keyword":"RAG"},{"keyword":"converted"},{"phrase":"treat as instructions"},{"phrase":"from the web"},{"phrase":"scraped"}],"routes_to":["guideline:agent-infra/untrusted-input-spotlighting"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"upstream-proposal","triggers":[{"phrase":"after creating"},{"phrase":"after improving"},{"keyword":"upstream"}],"routes_to":["skill:upstream-contribute"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"user-interrupt-priority","triggers":[{"keyword":"weiter"},{"keyword":"resume"},{"keyword":"continue"},{"phrase":"stop that"},{"phrase":"mach stattdessen"},{"command":"work"},{"command":"roadmap:process-full"},{"command":"roadmap:process-phase"},{"command":"implement-ticket"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]}],"profiles":{"minimal":["__kernel__"],"essential":["__kernel__","downstream-changes"],"full":["__kernel__","__tier_1__","__tier_2__"]}}
|
|
1
|
+
{"schema_version":2,"kernel":["agent-authority","ask-when-uncertain","commit-policy","direct-answers","language-and-tone","no-cheap-questions","non-destructive-by-default","scope-control","verify-before-complete"],"tier_1":[{"id":"architecture","triggers":[{"keyword":"controller"},{"keyword":"service"},{"keyword":"module"}],"routes_to":["skill:module-detect-on-the-fly"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"artifact-engagement-recording","triggers":[{"phrase":"/implement-ticket"},{"phrase":"/work"},{"keyword":"telemetry"}],"routes_to":["contract:artifact-engagement-flow"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"autonomous-execution","triggers":[{"keyword":"personal.autonomy"},{"phrase":"autonomy mode"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"command-suggestion-policy","triggers":[{"phrase":"free-form prompt"},{"phrase":"command suggestion"}],"routes_to":["contract:command-suggestion-flow"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"context-hygiene","triggers":[{"keyword":"3-failure"},{"phrase":"long conversation"}],"routes_to":["guideline:agent-infra/context-hygiene-mechanics"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"copilot-routing","triggers":[{"keyword":"copilot"},{"phrase":"copilot-instructions"},{"phrase":"copilot pr review"}],"routes_to":["skill:copilot-config"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"devcontainer-routing","triggers":[{"keyword":"devcontainer"},{"keyword":"codespaces"},{"keyword":"codespace"},{"phrase":"devcontainer.json"}],"routes_to":["skill:devcontainer"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"docker-commands","triggers":[{"keyword":"docker"},{"keyword":"artisan"},{"keyword":"composer"},{"phrase":"inside the container"}],"routes_to":["skill:docker"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"fast-path-marker-visibility","triggers":[{"keyword":"low-impact council"},{"keyword":"fast-path"},{"keyword":"Resolved via low-impact council"},{"keyword":"low_impact"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"laravel-routing","triggers":[{"keyword":"laravel"},{"keyword":"artisan"},{"keyword":"eloquent"},{"keyword":"FormRequest"}],"routes_to":["skill:laravel"],"workspaces":["engineering"],"packs":["laravel"]},{"id":"low-impact-corpus-privacy-floor","triggers":[{"path_prefix":"agents/decisions/low-impact-decisions"},{"keyword":"low-impact-decisions"},{"keyword":"low-impact corpus"},{"keyword":"learn-low-impact"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"no-attribution-footers","triggers":[{"keyword":"co-authored"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"no-decorative-emojis-in-git-surfaces","triggers":[{"keyword":"gh pr create"},{"keyword":"git commit"},{"keyword":"🤖"},{"keyword":"🚀"},{"keyword":"🎉"},{"keyword":"✨"},{"keyword":"🔥"},{"keyword":"💡"},{"keyword":"👍"},{"keyword":"❤️"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"no-roadmap-references","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"agents/runtime/council/questions/"},{"path_prefix":"agents/runtime/council/responses/"},{"path_prefix":"agents/runtime/council/sessions/"}],"routes_to":["skill:agent-docs-writing","skill:ai-council"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"onboarding-gate","triggers":[{"phrase":"first turn"},{"keyword":"onboarding"},{"path_prefix":".agent-settings.yml"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"php-coding","triggers":[{"file_pattern":"*.php"},{"keyword":"phpstan"},{"keyword":"ecs"}],"routes_to":["guideline:php/php-coding-patterns"],"workspaces":["engineering"],"packs":["php"]},{"id":"question-not-instruction","triggers":[{"phrase":"warum"},{"phrase":"wieso"},{"phrase":"weshalb"},{"keyword":"why"},{"phrase":"what do you think"},{"phrase":"was denkst du"},{"phrase":"was hältst du"},{"phrase":"geht das"},{"phrase":"kannst du"},{"phrase":"sollte ich"},{"phrase":"should i"},{"phrase":"is it possible"}],"routes_to":[],"workspaces":["engineering"],"packs":["meta"]},{"id":"roadmap-progress-sync","triggers":[{"path_prefix":"agents/roadmaps/"},{"command":"/roadmap:process-step"},{"command":"/roadmap:process-phase"},{"command":"/roadmap:process-full"}],"routes_to":["guideline:agent-infra/roadmap-progress-mechanics"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"skill-quality","triggers":[{"path_prefix":"src/skills/"}],"routes_to":["guideline:agent-infra/skill-quality-checklist"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"slash-command-routing-policy","triggers":[{"keyword":"/create-pr"},{"keyword":"/commit"},{"keyword":"/fix-ci"},{"phrase":"slash command"}],"routes_to":["skill:command-routing"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"source-confidentiality","triggers":[{"path_prefix":"src/skills/"},{"path_prefix":"src/rules/"},{"path_prefix":"src/domains/"},{"path_prefix":"docs/"},{"path_prefix":"agents/evidence/"},{"path_prefix":"agents/roadmaps/"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"source-of-truth","triggers":[{"path_prefix":"dist/agent-src/"},{"path_prefix":".augment/"},{"path_prefix":".claude/"},{"path_prefix":".cursor/"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"symfony-routing","triggers":[{"keyword":"symfony"},{"keyword":"doctrine"},{"keyword":"twig"},{"keyword":"messenger"}],"routes_to":["skill:symfony-workflow"],"workspaces":["engineering"],"packs":["symfony"]},{"id":"user-interaction","triggers":[{"keyword":"option"},{"keyword":"recommendation"},{"phrase":"what do you recommend"},{"phrase":"was empfiehlst du"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]}],"tier_2":[{"id":"active-remediation","triggers":[{"keyword":"refactor"},{"keyword":"duplicate"},{"keyword":"legacy"},{"keyword":"deprecated"},{"keyword":"modernize"},{"keyword":"upgrade"},{"keyword":"cleanup"},{"keyword":"technical debt"}],"routes_to":["guideline:agent-infra/active-remediation-mechanics"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"artifact-drafting-protocol","triggers":[{"phrase":"new skill"},{"phrase":"new rule"},{"phrase":"new command"},{"phrase":"new guideline"},{"phrase":"neue Regel"},{"phrase":"bau mir ein Skill"}],"routes_to":["guideline:agent-infra/artifact-drafting-protocol-mechanics"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"augment-edit-discipline","triggers":[{"path_prefix":".augment/"},{"path_prefix":"src/"},{"keyword":"portable"},{"keyword":"rename"},{"keyword":"delete"}],"routes_to":["guideline:augment-portability-patterns","skill:agent-docs-writing"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"brand-source-of-truth","triggers":[{"keyword":"brand"},{"keyword":"on-brand"},{"keyword":"off-brand"},{"keyword":"brand tokens"},{"keyword":"brand voice"},{"keyword":"brand guide"},{"keyword":"brand profile"},{"phrase":"brand consistency"},{"phrase":"on brand"},{"phrase":"brand source of truth"}],"routes_to":[],"workspaces":["engineering"],"packs":["brand"]},{"id":"broken-access-control","triggers":[{"keyword":"endpoint"},{"keyword":"route"},{"keyword":"authorization"},{"keyword":"tenant"},{"keyword":"IDOR"},{"keyword":"session"},{"keyword":"login"},{"keyword":"controller"},{"keyword":"findById"}],"routes_to":["skill:authz-review","skill:multi-tenancy","skill:threat-modeling"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"cli-output-handling","triggers":[{"keyword":"git"},{"keyword":"phpstan"},{"keyword":"rector"},{"keyword":"phpunit"},{"keyword":"composer"},{"keyword":"npm"},{"keyword":"pnpm"},{"keyword":"yarn"},{"keyword":"eslint"},{"keyword":"tsc"},{"keyword":"vitest"},{"keyword":"jest"},{"keyword":"pytest"},{"keyword":"ruff"},{"keyword":"mypy"},{"keyword":"pyright"},{"keyword":"cargo"},{"keyword":"golangci-lint"},{"keyword":"docker"},{"keyword":"kubectl"},{"keyword":"terraform"},{"phrase":"go test"},{"phrase":"go build"}],"routes_to":["skill:rtk-output-filtering"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"code-comment-discipline","triggers":[{"keyword":"comment"},{"keyword":"docblock"},{"keyword":"phpdoc"},{"keyword":"jsdoc"},{"keyword":"docstring"},{"keyword":"implement"},{"keyword":"class"},{"keyword":"method"},{"keyword":"refactor"}],"routes_to":["guideline:code-clarity"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"code-provenance","triggers":[{"keyword":"port this"},{"keyword":"adapt this"},{"keyword":"based on this repo"},{"keyword":"similar implementation"},{"keyword":"found this on GitHub"},{"keyword":"borrow"},{"keyword":"vendored"},{"keyword":"reference implementation"},{"keyword":"harvest"},{"keyword":"adopt from"}],"routes_to":["skill:license-compliance-audit","skill:license-compliance-borrow-check","skill:license-compliance-credits"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"commit-conventions","triggers":[{"keyword":"commit"},{"keyword":"branch"},{"phrase":"conventional commits"}],"routes_to":["skill:conventional-commits-writing"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"communication-through-line","triggers":[{"phrase":"reporting progress"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"content-quoting-floor","triggers":[{"keyword":"quote"},{"keyword":"excerpt"},{"keyword":"verbatim"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"council-availability","triggers":[{"keyword":"council"},{"keyword":"ai council"},{"keyword":"ai-council"},{"keyword":"council:status"},{"keyword":"second opinion"},{"phrase":"cross-check with another model"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"cross-source-consistency","triggers":[{"keyword":"ticket"},{"keyword":"refine"},{"keyword":"acceptance criteria"},{"keyword":"mockup"},{"keyword":"screenshot"},{"keyword":"attachment"},{"keyword":"roadmap"},{"keyword":"estimate"},{"phrase":"plan this ticket"},{"phrase":"refine this ticket"},{"phrase":"is this ticket clear"},{"phrase":"implement the ticket"}],"routes_to":["guideline:agent-infra/cross-source-consistency-mechanics"],"workspaces":["engineering","product"],"packs":["engineering-base","product-basic"]},{"id":"decision-revisit-gate","triggers":[{"keyword":"don't relitigate"},{"keyword":"honest null"},{"keyword":"already decided"},{"keyword":"locked decision"},{"keyword":"budget blocks"}],"routes_to":["skill:decision-review"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"delegation-policy","triggers":[{"keyword":"delegate"},{"keyword":"orchestrate"},{"keyword":"subagent"},{"keyword":"parallel"},{"phrase":"review these"},{"phrase":"analyze the codebase"},{"phrase":"for each"},{"keyword":"analyse"},{"keyword":"analyze"}],"routes_to":["skill:subagent-orchestration"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"design-fidelity","triggers":[{"keyword":"prototype"},{"keyword":"mockup"},{"keyword":"wireframe"},{"keyword":"design system"},{"keyword":"design spec"},{"keyword":"Figma"},{"keyword":"handoff"},{"keyword":"Claude Design"},{"phrase":"match the design"},{"phrase":"build this design"},{"phrase":"design fidelity"},{"phrase":"stick to the design"},{"phrase":"design.html"},{"phrase":"attached artifact"},{"phrase":"provided artifact"},{"phrase":"übernimm das design"},{"phrase":"baue das nach"},{"phrase":"bau das nach"},{"phrase":"1:1 um"},{"phrase":"1:1 nach"},{"phrase":"claude.site/artifacts"},{"file_pattern":"*design.html"},{"path_prefix":".claude/design-system/"}],"routes_to":["guideline:design-fidelity-mechanics"],"workspaces":["engineering"],"packs":["engineering-base","frontend-design"]},{"id":"design-review-after-ui-write","triggers":[{"path_prefix":"resources/views/"},{"path_prefix":"resources/js/"},{"path_prefix":"components/"},{"path_prefix":"src/components/"},{"path_prefix":"pages/"},{"file_pattern":"*.vue"},{"file_pattern":"*.svelte"},{"file_pattern":"*.tsx"},{"file_pattern":"*.jsx"},{"file_pattern":"*.blade.php"},{"keyword":"component"},{"keyword":"design token"}],"routes_to":["skill:accessibility-auditor","skill:design-review"],"workspaces":["agent-config-maintainer","engineering"],"packs":["frontend-design"]},{"id":"doc-screenshot-hygiene","triggers":[{"keyword":"screenshot"},{"keyword":"screenshots"},{"keyword":"screen capture"},{"keyword":"screen grab"},{"keyword":"admin panel screenshot"},{"keyword":"dashboard screenshot"},{"keyword":"docs site"},{"keyword":"Starlight"},{"phrase":"add a screenshot"},{"phrase":"screenshot for the docs"},{"phrase":"screenshot in the readme"},{"phrase":"embed an image in the docs"},{"phrase":"put a screenshot"},{"phrase":"generate a docs site"},{"phrase":"capture the ui"},{"path_prefix":"docs/media/"}],"routes_to":["skill:screenshot-hygiene"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"domain-adoption-policy","triggers":[{"keyword":"mobile track"},{"keyword":"ml track"},{"keyword":"blockchain track"},{"path_prefix":"src/skills/"}],"routes_to":["guideline:agent-infra/domain-adoption-gates"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"domain-safety-disclaimer","triggers":[{"keyword":"legal brief"},{"keyword":"contract redline"},{"keyword":"terms of service"},{"keyword":"privacy policy"},{"keyword":"diagnosis"},{"keyword":"symptoms"},{"keyword":"dosage"},{"keyword":"medication"},{"keyword":"investment memo"},{"keyword":"tax position"},{"keyword":"strategic recommendation"},{"keyword":"board memo"},{"keyword":"executive summary"},{"phrase":"review this contract"},{"phrase":"is this symptom"},{"phrase":"should I invest"},{"phrase":"what should we do"}],"routes_to":["skill:brand-identity","skill:brand-strategy","skill:contracts-cognition","skill:dcf-modeling","skill:decision-record","skill:privacy-review","skill:scenario-modeling","skill:stakeholder-tradeoff"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"domain-safety-pii","triggers":[{"keyword":"support macro"},{"keyword":"ticket response"},{"keyword":"help desk"},{"keyword":"Zendesk"},{"keyword":"Intercom"},{"keyword":"testimonial"},{"keyword":"case study"},{"keyword":"customer story"},{"keyword":"candidate"},{"keyword":"interview notes"},{"keyword":"scorecard"},{"keyword":"rejection email"},{"keyword":"offer letter"},{"keyword":"invoice"},{"keyword":"accounts receivable"},{"keyword":"accounts payable"},{"keyword":"finance memo"},{"keyword":"log"},{"keyword":"logger"},{"keyword":"Sentry"},{"keyword":"Datadog"},{"keyword":"structured log"},{"keyword":"export to CSV"},{"keyword":"data export"},{"keyword":"partner integration"},{"phrase":"draft a response to"},{"phrase":"marketing email featuring"},{"phrase":"draft feedback for"},{"phrase":"log the user"},{"phrase":"send them the spreadsheet"}],"routes_to":["skill:data-handling-judgment","skill:logging-monitoring","skill:privacy-review","skill:secrets-management"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"domain-safety-retention","triggers":[{"keyword":"retention policy"},{"keyword":"data retention"},{"keyword":"record retention"},{"keyword":"ticket retention"},{"keyword":"CRM retention"},{"keyword":"delete financial"},{"keyword":"purge invoice"},{"keyword":"DSAR"},{"keyword":"data subject request"},{"keyword":"right to be forgotten"},{"phrase":"how long should we keep"},{"phrase":"when can we delete"},{"phrase":"delete customer data"},{"phrase":"how long do we keep tickets"}],"routes_to":["skill:data-handling-judgment","skill:privacy-review"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"downstream-changes","triggers":[{"keyword":"callers"},{"keyword":"imports"},{"keyword":"downstream"},{"phrase":"api changed"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"engineering-safety-floor","triggers":[{"keyword":"production"},{"keyword":"deploy"},{"keyword":"migration"},{"keyword":"schema change"},{"keyword":"DROP TABLE"},{"keyword":"TRUNCATE"},{"keyword":"force push"},{"keyword":"rebase main"},{"keyword":"rollback"},{"keyword":"secrets rotation"},{"keyword":"IAM"},{"keyword":"DNS"},{"keyword":"terraform apply"},{"keyword":"kubectl apply"},{"phrase":"ship to prod"},{"phrase":"deploy to production"},{"phrase":"merge to main"},{"phrase":"release this"}],"routes_to":["skill:launch-readiness","skill:threat-modeling"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"evaluator-independence","triggers":[{"keyword":"blind review"},{"keyword":"blind pass"},{"keyword":"honest null"},{"keyword":"no-findings"},{"keyword":"adversarial review"},{"keyword":"judge"},{"phrase":"review my own"},{"phrase":"commission a review"},{"phrase":"second opinion on my"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"external-code-graph-interop","triggers":[{"keyword":"scip"},{"keyword":"code-graph"},{"keyword":"code graph"},{"phrase":"graph.json"},{"phrase":"who calls"},{"phrase":"call graph"},{"phrase":"find references"},{"phrase":"where is this used"}],"routes_to":[],"workspaces":["engineering"],"packs":["meta"]},{"id":"external-reference-deep-dive","triggers":[{"keyword":"github.com/"},{"keyword":"source of truth"},{"phrase":"reference repo"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"finance-safety-floor","triggers":[{"keyword":"runway"},{"keyword":"burn"},{"keyword":"valuation"},{"keyword":"DCF"},{"keyword":"IRR"},{"keyword":"MOIC"},{"keyword":"LTV"},{"keyword":"payback"},{"keyword":"sensitivity"},{"keyword":"fundraise"},{"keyword":"term sheet"},{"keyword":"dilution"},{"keyword":"NRR"},{"keyword":"EBITDA"},{"keyword":"free cash flow"},{"phrase":"what's it worth"},{"phrase":"how long do we have"},{"phrase":"should we raise"},{"phrase":"model the scenarios"}],"routes_to":["skill:dcf-modeling","skill:forecasting","skill:runway-cognition","skill:scenario-modeling","skill:unit-economics-modeling"],"workspaces":["finance"],"packs":["finance-advanced","finance-basic"]},{"id":"framework-neutrality-in-generic-skills","triggers":[{"path_prefix":"src/skills/"},{"path_prefix":"src/rules/"},{"path_prefix":"src/agent-src/commands/"},{"keyword":"FormRequest"},{"keyword":"PHPStan"},{"keyword":"php artisan"},{"keyword":"composer.json"},{"keyword":"Eloquent"},{"keyword":"Pest"},{"keyword":"Blade"},{"keyword":"vendor/bin"},{"keyword":"Artisan"},{"keyword":"Rector"},{"phrase":"every controller"},{"phrase":"all controllers"},{"phrase":"generic skill"}],"routes_to":["guideline:agent-infra/framework-neutrality-patterns"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"git-history-discipline","triggers":[{"keyword":"git rebase"},{"keyword":"rebase --onto"},{"keyword":"reset --hard"},{"keyword":"fixup"},{"keyword":"--amend"},{"keyword":"force-push"},{"keyword":"--force-with-lease"},{"keyword":"squash-merge"},{"phrase":"branch diverged"},{"phrase":"pull --rebase failed"},{"phrase":"ahead and behind"},{"phrase":"unexpected commits on the branch"},{"phrase":"commits I did not create"}],"routes_to":["skill:git-workflow"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"history-discipline","triggers":[{"keyword":"audit"},{"keyword":"audit log"},{"keyword":"activity log"},{"keyword":"history"},{"keyword":"event sourcing"},{"keyword":"changelog"},{"phrase":"who changed"},{"phrase":"wer hat was"},{"phrase":"track changes"},{"phrase":"change history"}],"routes_to":["skill:history-design"],"workspaces":["engineering"],"packs":["history-discipline"]},{"id":"icon-consistency","triggers":[{"keyword":"icon"},{"keyword":"iconography"},{"keyword":"lucide"},{"keyword":"heroicons"},{"keyword":"icon set"},{"phrase":"icon system"}],"routes_to":[],"workspaces":["engineering"],"packs":["frontend-design"]},{"id":"image-likeness-and-rights","triggers":[{"keyword":"/image:"},{"keyword":"image generation"},{"keyword":"generate an image"},{"keyword":"logo"},{"keyword":"likeness"},{"keyword":"trademark"},{"keyword":"brand mark"},{"path_prefix":"scripts/ai-image/adapters/"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-image"]},{"id":"improve-before-implement","triggers":[{"keyword":"refactor"},{"keyword":"implement"},{"keyword":"migration"}],"routes_to":["guideline:agent-infra/agent-interaction-and-decision-quality"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"invite-challenge","triggers":[{"keyword":"plan"},{"keyword":"design"},{"keyword":"architecture"},{"keyword":"approach"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"laravel-translations","triggers":[{"path_prefix":"lang/"},{"keyword":"translation"},{"keyword":"__()"},{"keyword":"trans("}],"routes_to":["skill:laravel"],"workspaces":["engineering"],"packs":["laravel"]},{"id":"legal-safety-floor","triggers":[{"keyword":"NDA"},{"keyword":"DPA"},{"keyword":"data processing agreement"},{"keyword":"contract review"},{"keyword":"redline"},{"keyword":"clause"},{"keyword":"GDPR"},{"keyword":"Art. 28"},{"keyword":"controller"},{"keyword":"processor"},{"keyword":"privilege"},{"keyword":"work product"},{"phrase":"review this contract"},{"phrase":"is this a legal problem"},{"phrase":"check this NDA"}],"routes_to":["skill:contract-review","skill:dpa-review","skill:legal-intake-triage","skill:nda-triage"],"workspaces":["legal-review-prep"],"packs":["legal-review-prep"]},{"id":"lethal-trifecta-guard","triggers":[{"path_prefix":"src/skills/"},{"path_prefix":"src/agent-src/commands/"},{"keyword":"lethal trifecta"},{"keyword":"untrusted content"},{"keyword":"exfiltration"},{"keyword":"data exfil"},{"phrase":"fetch and send"},{"phrase":"read the file and post"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"linked-projects-onboarding-gate","triggers":[{"keyword":"linked project"},{"keyword":"cross-repo"},{"keyword":"sibling repo"},{"path_prefix":".idea/modules.xml"},{"path_prefix":".idea/vcs.xml"}],"routes_to":["guideline:agent-infra/linked-projects-onboarding-gate"],"workspaces":["agent-config-maintainer","engineering"],"packs":["engineering-base"]},{"id":"markdown-safe-codeblocks","triggers":[{"keyword":"triple backticks"},{"file_pattern":"*.md"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"media-governance-routing","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"deepfake"},{"keyword":"voice clone"},{"keyword":"voice cloning"},{"keyword":"likeness"},{"keyword":"brand impersonation"},{"phrase":"in the style of"},{"phrase":"in the voice of"},{"phrase":"as [public figure]"},{"phrase":"impersonate"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-image","ai-video"]},{"id":"media-sync-ground-truth","triggers":[{"keyword":"lip-sync"},{"keyword":"lip sync"},{"keyword":"lipsync"},{"keyword":"music video"},{"keyword":"beat-cut"},{"keyword":"/video:from-song"},{"keyword":"vocal map"},{"phrase":"cut to the beat"},{"phrase":"sing the"},{"phrase":"mit den lippen"},{"phrase":"lippen passend"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-video"]},{"id":"minimal-safe-diff","triggers":[{"keyword":"drive-by"},{"keyword":"rewrite"},{"keyword":"fix"},{"phrase":"from scratch"},{"phrase":"second system"}],"routes_to":["guideline:agent-infra/minimal-safe-diff-mechanics"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"missing-tool-handling","triggers":[{"keyword":"command not found"},{"keyword":"not installed"}],"routes_to":["guideline:agent-infra/missing-tool-handling"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"model-recommendation","triggers":[{"phrase":"switch task"},{"phrase":"new task"},{"phrase":"which model"},{"keyword":"model_tier"}],"routes_to":["guideline:agent-infra/model-recommendation"],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"no-pr-progress-comments","triggers":[{"keyword":"gh pr comment"},{"keyword":"PullRequestComment"},{"phrase":"status comment"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"notes-first-reasoning","triggers":[{"keyword":"debug"},{"keyword":"investigate"},{"keyword":"hypothesis"},{"keyword":"root cause"},{"phrase":"figure out why"},{"phrase":"should we use"}],"routes_to":["skill:memory-consolidation"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"output-discipline","triggers":[{"keyword":"// rest of component"},{"keyword":"for brevity"},{"keyword":"rest follows the same pattern"},{"phrase":"similar pattern"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"persona-governance","triggers":[{"path_prefix":"src/agent-src/personas/"},{"path_prefix":"dist/agent-src/personas/"},{"keyword":"persona"},{"keyword":"personas"},{"phrase":"new persona"},{"phrase":"add a persona"},{"phrase":"specialist persona"},{"phrase":"review lens"}],"routes_to":["contract:persona-schema"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"prefer-enums-over-literals","triggers":[{"keyword":"enum"},{"keyword":"status"},{"keyword":"kind"},{"keyword":"category"},{"keyword":"migration"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"preservation-guard","triggers":[{"keyword":"Iron Law"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"provider-lifecycle-discipline","triggers":[{"keyword":"/video:"},{"keyword":"/image:"},{"keyword":"/audio:"},{"keyword":"ai-video"},{"keyword":"ai-image"},{"keyword":"ai-audio"},{"keyword":"adapter"},{"keyword":"provider"},{"path_prefix":"scripts/ai-video/adapters/"},{"path_prefix":"scripts/ai-image/adapters/"},{"path_prefix":"scripts/media/lib/"},{"path_prefix":"agents/.ai-video.xml"},{"phrase":"lifecycle"},{"phrase":"default provider"}],"routes_to":["contract:provider-lifecycle"],"workspaces":["agent-config-maintainer","engineering","gtm"],"packs":["ai-image","ai-video"]},{"id":"reviewer-awareness","triggers":[{"keyword":"reviewer"},{"phrase":"suggest reviewers"},{"phrase":"risk hotspot"},{"phrase":"ownership map"},{"phrase":"review this pr"}],"routes_to":["skill:review-routing"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"roadmap-ci-steps-policy","triggers":[{"path_prefix":"agents/roadmaps/"},{"path_prefix":"{module_root}/"},{"keyword":"task ci"},{"keyword":"make test"},{"keyword":"npm run check"},{"keyword":"pnpm run check"},{"keyword":"yarn check"},{"keyword":"composer test"},{"phrase":"run the quality pipeline"},{"phrase":"run task ci"},{"phrase":"run the full ci"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"role-mode-adherence","triggers":[{"keyword":"active_role"},{"keyword":"role-mode"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"rule-type-governance","triggers":[{"path_prefix":"src/rules/"}],"routes_to":["guideline:agent-infra/rule-type-governance"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"runtime-safety","triggers":[{"keyword":"execution"},{"keyword":"automated"},{"keyword":"assisted"},{"keyword":"handler"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"scale-discipline","triggers":[{"keyword":"migration"},{"keyword":"index"},{"keyword":"N+1"},{"keyword":"eager load"},{"keyword":"pagination"},{"keyword":"queue"},{"keyword":"job"},{"keyword":"retention"},{"keyword":"schema"},{"keyword":"SELECT *"},{"phrase":"will this scale"},{"phrase":"review this migration"},{"phrase":"add a table"},{"phrase":"send an email on"}],"routes_to":["skill:schema-review"],"workspaces":["engineering"],"packs":["scale-discipline"]},{"id":"secret-vcs-guard","triggers":[{"keyword":"secret"},{"keyword":"password"},{"keyword":"credential"},{"keyword":"api key"},{"keyword":"token"},{"keyword":".env"},{"keyword":"commit"},{"keyword":"git add"},{"keyword":"svn commit"},{"keyword":"hg commit"},{"keyword":"push"}],"routes_to":["skill:secrets-management"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"security-sensitive-stop","triggers":[{"keyword":"auth"},{"keyword":"billing"},{"keyword":"tenant"},{"keyword":"webhook"},{"keyword":"oauth"},{"keyword":"signing key"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"self-repair-loop","triggers":[{"keyword":"self-repair"},{"keyword":"self-repair-queue"},{"phrase":"nicht richtig gearbeitet"},{"phrase":"du hast das falsch"},{"phrase":"you ignored the rule"},{"phrase":"that was wrong"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"senior-engineering-discipline","triggers":[{"keyword":"implement"},{"keyword":"endpoint"},{"keyword":"query"},{"keyword":"migration"},{"keyword":"component"},{"keyword":"seeder"},{"keyword":"dependency"},{"keyword":"refactor"}],"routes_to":["skill:ai-code-blindspots","skill:frontend-render-security","skill:supply-chain-intake","skill:testing-anti-patterns"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"session-canary","triggers":[{"keyword":"canary"},{"keyword":"canary_name"},{"phrase":"session canary"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"settings-ask-protocol","triggers":[{"keyword":"settings:set"},{"keyword":"canary_name"},{"keyword":"rich_skills"},{"keyword":"adversarial_council"},{"keyword":"learn_on_session_end"},{"keyword":"open_edited_files"},{"phrase":"ask about a setting"},{"phrase":"settings question"},{"phrase":"should I enable"},{"phrase":"nickname"},{"path_prefix":"docs/contracts/settings-classes.md"}],"routes_to":["contract:settings-classes"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"skill-improvement-trigger","triggers":[{"phrase":"after completing"},{"keyword":"improvement"},{"keyword":"pipeline"}],"routes_to":["skill:skill-improvement-pipeline"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"source-discovery-gate","triggers":[{"keyword":"schema"},{"keyword":"endpoint"},{"phrase":"new API"},{"phrase":"unknown API"},{"phrase":"new vendor package"},{"phrase":"which fields"}],"routes_to":["skill:source-discovery"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"spreadsheet-source-quality","triggers":[{"keyword":"financial data"},{"keyword":"financial model"},{"keyword":"stock price"},{"keyword":"revenue figures"},{"keyword":"market data"},{"phrase":"pull the numbers"}],"routes_to":[],"workspaces":["finance"],"packs":["finance-basic"]},{"id":"strategy-safety-floor","triggers":[{"keyword":"vision"},{"keyword":"positioning"},{"keyword":"moat"},{"keyword":"competitive"},{"keyword":"market entry"},{"keyword":"OKR"},{"keyword":"build vs buy"},{"keyword":"buy vs partner"},{"keyword":"beachhead"},{"keyword":"GTM"},{"keyword":"category"},{"keyword":"where to play"},{"keyword":"where not to play"},{"phrase":"what's our strategy"},{"phrase":"should we enter"},{"phrase":"what's our moat"},{"phrase":"where should we focus"},{"phrase":"should we reorg"}],"routes_to":["skill:build-buy-partner","skill:competitive-moat-analysis","skill:market-entry-analysis","skill:okr-tree-modeling","skill:positioning-strategy","skill:vision-articulation"],"workspaces":["founder"],"packs":["founder-strategy"]},{"id":"think-before-action","triggers":[{"phrase":"before coding"},{"phrase":"before debugging"},{"phrase":"before modifying"},{"keyword":"implement"},{"keyword":"debug"},{"keyword":"refactor"},{"keyword":"fix"},{"keyword":"optimize"}],"routes_to":[],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"token-budget-discipline","triggers":[{"keyword":"token_budget_class"},{"keyword":"rich skill"}],"routes_to":[],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"token-efficiency","triggers":[{"keyword":"minimize tool calls"},{"phrase":"fetching logs"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]},{"id":"token-optimizer-maintenance","triggers":[{"keyword":"cli-output-handling"},{"keyword":"rtk-output-filtering"},{"keyword":"token-efficiency"},{"keyword":"agent-handoff"},{"keyword":"markitdown"},{"keyword":"token-optimizer"}],"routes_to":["skill:token-optimizer"],"workspaces":["agent-config-maintainer"],"packs":["meta"]},{"id":"tool-safety","triggers":[{"keyword":"allowed_tools"},{"keyword":"tool registry"}],"routes_to":[],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"ui-audit-gate","triggers":[{"path_prefix":"resources/views/"},{"path_prefix":"resources/js/"},{"path_prefix":"components/"},{"path_prefix":"src/components/"},{"path_prefix":"pages/"},{"file_pattern":"*.vue"},{"file_pattern":"*.svelte"},{"file_pattern":"*.tsx"},{"file_pattern":"*.jsx"},{"file_pattern":"*.blade.php"},{"keyword":"component"},{"keyword":"design token"}],"routes_to":["skill:existing-ui-audit","skill:iconography","skill:typography-system"],"workspaces":["agent-config-maintainer","engineering"],"packs":["frontend-design"]},{"id":"untrusted-input-defense","triggers":[{"keyword":"untrusted"},{"keyword":"fetched content"},{"keyword":"tool output"},{"keyword":"web page"},{"keyword":"RAG"},{"keyword":"converted"},{"phrase":"treat as instructions"},{"phrase":"from the web"},{"phrase":"scraped"}],"routes_to":["guideline:agent-infra/untrusted-input-spotlighting"],"workspaces":["engineering"],"packs":["engineering-base"]},{"id":"upstream-proposal","triggers":[{"phrase":"after creating"},{"phrase":"after improving"},{"keyword":"upstream"}],"routes_to":["skill:upstream-contribute"],"workspaces":["agent-config-maintainer","engineering"],"packs":["meta"]},{"id":"user-interrupt-priority","triggers":[{"keyword":"weiter"},{"keyword":"resume"},{"keyword":"continue"},{"phrase":"stop that"},{"phrase":"mach stattdessen"},{"command":"work"},{"command":"roadmap:process-full"},{"command":"roadmap:process-phase"},{"command":"implement-ticket"}],"routes_to":[],"workspaces":["agent-config-maintainer","construction","engineering","finance","founder","gtm","legal-review-prep","ops","product","small-business"],"packs":["meta"]}],"profiles":{"minimal":["__kernel__"],"essential":["__kernel__","downstream-changes"],"full":["__kernel__","__tier_1__","__tier_2__"]}}
|
|
@@ -22,10 +22,64 @@ Under those constraints the fix is auditable in the same diff and is *not* scope
|
|
|
22
22
|
|
|
23
23
|
Bigger, or diverges from the task → do **not** refactor inline, do **not** interrupt the flow. Note the site (file:line + the issue). Surface the batch as **one** numbered-options prompt (per `user-interaction`, one recommendation line) **after the task is delivered** — or mid-work only when the flow makes it natural. Each option must carry a real trade-off (`no-cheap-questions`). Refactor only on an explicit yes, as a separate scoped change (`scope-control`, `downstream-changes`).
|
|
24
24
|
|
|
25
|
+
#### Option anatomy — a pickable fix, not a yes/no
|
|
26
|
+
|
|
27
|
+
The user should be able to answer with one number and get a change they can predict. Each numbered option therefore names four things, in a line or two:
|
|
28
|
+
|
|
29
|
+
1. **What changes** — the concrete edit, in the vocabulary of the code ("replace the three `array()` literals with `[]`", not "clean up the file").
|
|
30
|
+
2. **Where** — file, or the group of files if the option covers a batch.
|
|
31
|
+
3. **How large** — line count or an honest size class, so the user can weigh it without opening the diff.
|
|
32
|
+
4. **What it costs** — the risk, the review burden, or the reason it was not simply done inline.
|
|
33
|
+
|
|
34
|
+
Group findings by **fix shape**, never one option per finding: seven lint errors that are three `no-unused-vars`, three `prefer-const` and one genuine type hole are three options, not seven. The final option is always an explicit **leave it as is** — its absence is what turns a menu into pressure. One recommendation line under the block names your pick (`user-interaction` Iron Law 1).
|
|
35
|
+
|
|
36
|
+
#### Carry-over — undecided is not finished
|
|
37
|
+
|
|
38
|
+
An item the user has not answered stays live: raise it once more at the next natural task boundary, in the same batched form. Two bounds keep that from becoming nagging:
|
|
39
|
+
|
|
40
|
+
- **A decline is terminal.** An explicit "leave it" / "ignore" closes the item for the task; re-raising it is the re-ask `scope-control` § Decline = silence forbids.
|
|
41
|
+
- **Once per boundary, not once per reply.** The batch is a task-close artifact. Repeating it between steps is the continuation prompt `no-cheap-questions` Iron Law 4 forbids.
|
|
42
|
+
|
|
25
43
|
### Propose a follow-up PR (many spots)
|
|
26
44
|
|
|
27
45
|
When the issues are too many to fold in without blowing the current diff's scope, propose **one or more separate follow-up PRs** (or a roadmap under `agents/roadmaps/`, using the shared-prefix convention) so the user reviews the changes before merge. Creating the PR/roadmap is **permission-gated** — propose, get a yes, then create (`scope-control`, `commit-policy`).
|
|
28
46
|
|
|
47
|
+
## Observed failing checks — classifying the red you already have
|
|
48
|
+
|
|
49
|
+
The rule puts a check result you have already seen into the same ladder as a defect you read in a file. Running a command, reading seven errors, and walking past them is not scoping the work — it is looking away.
|
|
50
|
+
|
|
51
|
+
The rule's two bounds, in full:
|
|
52
|
+
|
|
53
|
+
- **Only output you already have.** The clause never obliges a check run; it fires on a result already in front of you. What runs locally stays the user's call — this package records "no proactive quality tools, remote CI gates only" as a standing preference — and the remote CI remains the authoritative gate. An obligation to *hunt* for red would contradict that outright; an obligation not to walk past red you already read does not.
|
|
54
|
+
- **Ownership picks the tier, never the silence.** Caused by your diff → it is the task. Pre-existing and inside the fix-now bar → fix it. Pre-existing and wider, or many, or unrelated → note + ask, or a follow-up PR. There is no seventh option called "mention it in the closing summary" — that line reads as a status report and closes nothing.
|
|
55
|
+
|
|
56
|
+
Classification is the whole of the work, and it runs on two axes:
|
|
57
|
+
|
|
58
|
+
| | Inside the fix-now bar | Outside it |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| **Caused by this diff** | Fix it — it is the task, not remediation. | Fix it; a diff you cannot make green is not deliverable. Blocked → surface it as a blocker, never as a caveat. |
|
|
61
|
+
| **Pre-existing** | Fix it with the work, and say in the commit body that it was pre-existing. | Note + ask with candidate fixes, or a follow-up PR when the batch is large. |
|
|
62
|
+
|
|
63
|
+
Two failure shapes this table exists to name:
|
|
64
|
+
|
|
65
|
+
- **"Not mine, so not mentioned."** Pre-existing red is the most common thing an agent walks past, because `minimal-safe-diff` reads like permission to ignore it. It is not: that rule bounds the *diff*, this one bounds the *silence*. The two are satisfied together by noting the finding and asking, which changes no line of code.
|
|
66
|
+
- **"Mine, so quietly worked around."** A gate that goes green because the check was narrowed, an assertion loosened, or a file excluded is a defect with a green light on top. Route it through the ladder as an issue, and say what was narrowed.
|
|
67
|
+
|
|
68
|
+
### Worked example — a red gate seen mid-task
|
|
69
|
+
|
|
70
|
+
> `task check` fails; the lint step reports 7 errors, all pre-existing on `main`, in files this branch does not touch.
|
|
71
|
+
|
|
72
|
+
Wrong, and the canonical shape of it: finish the task, and close with *"the only thing still open is the lint finding — 7 errors on main, which makes `task check` unusable as a chain"*. The sentence is accurate, the issue is named, and nothing about it is decided — the next session inherits it verbatim.
|
|
73
|
+
|
|
74
|
+
Right: the errors are pre-existing, outside the fix-now bar (unrelated files, more than ~10 lines), so they are **note + ask** — after the task is delivered, one block:
|
|
75
|
+
|
|
76
|
+
1. Fix the 3 `no-unused-vars` in `src/a.ts`, `src/b.ts` — ~6 lines, mechanical, ships in this PR.
|
|
77
|
+
2. Fix all 7 in a separate follow-up PR — keeps this diff single-purpose; needs a branch (permission-gated).
|
|
78
|
+
3. Suppress the two in generated output with a scoped ignore, fix the rest — smallest green path, adds a suppression to review.
|
|
79
|
+
4. Leave as is — `task check` stays unusable as a chain until someone else picks it up.
|
|
80
|
+
|
|
81
|
+
One recommendation line names the pick. Whatever the user answers, the item is closed. If they answer nothing, it is raised once at the next task boundary — not carried silently into a third session.
|
|
82
|
+
|
|
29
83
|
## Version-gated modernization
|
|
30
84
|
|
|
31
85
|
Update stale idioms to the version the project **actually runs** — but only when that version is **verified**:
|
|
@@ -36,16 +36,17 @@ The stack-specific bans live in the apply skills and link back here by entry ID.
|
|
|
36
36
|
The objective floors are cited from the linter, never re-eyeballed by an agent.
|
|
37
37
|
|
|
38
38
|
**Deterministic detector backing** (`lint_design_slop`, dependency-free, zero
|
|
39
|
-
runtime token cost): a pattern-detectable subset of these entries
|
|
40
|
-
deterministic rule that `design-review` cites instead of re-deriving
|
|
41
|
-
`
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
runtime token cost): a pattern-detectable subset of these entries has a
|
|
40
|
+
deterministic rule that `design-review` cites instead of re-deriving (rule ids
|
|
41
|
+
`slop-<id>-*`, registry in `src/scripts/design_slop_rules.ts`). These are
|
|
42
|
+
**flags / rebuttable presumptions**, never hard blocks — a consumer `DESIGN.md`
|
|
43
|
+
that declares the pattern as intentional suppresses the flag.
|
|
44
|
+
|
|
45
|
+
Which entries those are is **not** enumerated here. The enumeration lives in
|
|
46
|
+
[§ Detector status](#detector-status) below, where every entry carries exactly
|
|
47
|
+
one status and `lint_design_antipattern_parity` checks the `backed` rows against
|
|
48
|
+
the registry on every run. A second hand-maintained list in this paragraph is
|
|
49
|
+
precisely the drift the gate exists to prevent, so there is only one.
|
|
49
50
|
|
|
50
51
|
## Current-generation tells (generation-dated — review 2026-Q4)
|
|
51
52
|
|
|
@@ -195,6 +196,74 @@ possible but deferred until a real incident.
|
|
|
195
196
|
|
|
196
197
|
---
|
|
197
198
|
|
|
199
|
+
## Detector status
|
|
200
|
+
|
|
201
|
+
Every catalog entry above carries exactly one status. This table is the single
|
|
202
|
+
enumeration of what the deterministic detector covers, and
|
|
203
|
+
`src/scripts/lint_design_antipattern_parity.ts` checks it on every CI run: a
|
|
204
|
+
`backed` row whose id is not in the registry fails, a registry rule whose
|
|
205
|
+
`catalogId` is not `backed` here fails, and an entry missing from this table
|
|
206
|
+
fails. `Q*` floors are excluded — they are owned by `lint_design_quality` and
|
|
207
|
+
are listed in § Quality floors.
|
|
208
|
+
|
|
209
|
+
| Status | Meaning |
|
|
210
|
+
|---|---|
|
|
211
|
+
| `backed` | a deterministic rule exists in `design_slop_rules.ts` |
|
|
212
|
+
| `floor` | measurable and enforced, but as a `Q*` objective floor in `lint_design_quality`, not as an aesthetic tell |
|
|
213
|
+
| `judgment-only` | needs structural or aesthetic judgment a text pass cannot make; `design-review` decides it |
|
|
214
|
+
| `deferred` | pattern-detectable but a design-system opinion rather than a floor; deliberately not shipped |
|
|
215
|
+
| `candidate` | a numeric threshold stated in the entry, not yet detected — a status that must resolve to `backed` or `judgment-only`, never persist |
|
|
216
|
+
|
|
217
|
+
| Entry | Status | Note |
|
|
218
|
+
|---|---|---|
|
|
219
|
+
| V1 | backed | |
|
|
220
|
+
| V2 | judgment-only | decoration-vs-intent is the tell; a text pass cannot read intent |
|
|
221
|
+
| V3 | backed | |
|
|
222
|
+
| V4 | backed | |
|
|
223
|
+
| V5 | judgment-only | icon register collision is a visual-style comparison |
|
|
224
|
+
| V6 | backed | |
|
|
225
|
+
| V7 | judgment-only | DOM-structure nesting depth, measured too false-positive-prone |
|
|
226
|
+
| V8 | backed | |
|
|
227
|
+
| C1 | judgment-only | the tell is the combination *as the primary scheme*; which colours are primary is a judgment |
|
|
228
|
+
| C2 | backed | |
|
|
229
|
+
| C3 | backed | |
|
|
230
|
+
| C4 | floor | WCAG contrast, Q1 |
|
|
231
|
+
| C5 | backed | |
|
|
232
|
+
| C6 | judgment-only | demoted 2026-08-13 at M1 = 4 of 32 clean files; the rule counted every saturated hue, so one accent plus a semantic danger colour reached its threshold — which is correct design, not the tell this entry describes |
|
|
233
|
+
| C7 | judgment-only | theme inversion may be deliberate emphasis |
|
|
234
|
+
| T1 | judgment-only | requires comparing optical weight across the document |
|
|
235
|
+
| T2 | judgment-only | requires knowing which element is the hero |
|
|
236
|
+
| T3 | judgment-only | icon-tile stack; DOM-structure analysis, too false-positive-prone |
|
|
237
|
+
| T4 | backed | |
|
|
238
|
+
| T5 | judgment-only | copy phrase-list; that mechanism is council-rejected |
|
|
239
|
+
| T6 | backed | |
|
|
240
|
+
| T7 | backed | |
|
|
241
|
+
| T8 | deferred | typeface count is a design-system opinion, not a floor |
|
|
242
|
+
| T9 | backed | |
|
|
243
|
+
| T10 | backed | |
|
|
244
|
+
| L1 | judgment-only | composite structural template |
|
|
245
|
+
| L2 | judgment-only | three-identical-card grid; DOM-structure analysis |
|
|
246
|
+
| L3 | deferred | spacing-multiple uniformity is a design-system opinion |
|
|
247
|
+
| L4 | backed | |
|
|
248
|
+
| L5 | floor | line length, Q3 |
|
|
249
|
+
| L6 | judgment-only | requires an ancestor relation a flat text pass cannot establish |
|
|
250
|
+
| L7 | judgment-only | requires a render |
|
|
251
|
+
| L8 | backed | |
|
|
252
|
+
| L9 | backed | |
|
|
253
|
+
| L10 | backed | |
|
|
254
|
+
| M1 | backed | |
|
|
255
|
+
| M2 | backed | |
|
|
256
|
+
| M3 | backed | |
|
|
257
|
+
| M4 | backed | |
|
|
258
|
+
| M5 | floor | reduced-motion alternative, Q4 |
|
|
259
|
+
| CP1 | backed | |
|
|
260
|
+
| CP2 | backed | |
|
|
261
|
+
| CP3 | judgment-only | copy phrase-list; that mechanism is council-rejected |
|
|
262
|
+
| CP4 | judgment-only | copy phrase-list; that mechanism is council-rejected |
|
|
263
|
+
| CP5 | backed | |
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
198
267
|
## The AI-slop originality self-test
|
|
199
268
|
|
|
200
269
|
Before finalizing any UI design, run this two-tier check:
|
|
@@ -4,6 +4,102 @@
|
|
|
4
4
|
|
|
5
5
|
_Origin: migrated from `src/rules/design-fidelity.md` per the P4 pattern of `road-to-kernel-and-router.md`. The Iron Law, the `design.fidelity_mode` strictness table, and the fire/not-fire scope stay in the rule; this file carries the illustrative depth._
|
|
6
6
|
|
|
7
|
+
## Data-basis ladder
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
WHENEVER SOURCE IS REACHABLE, THE SOURCE IS THE DATA BASIS.
|
|
11
|
+
A SCREENSHOT IS VALIDATION, NEVER THE INPUT YOU BUILD FROM,
|
|
12
|
+
WHILE ANY HIGHER RUNG IS REACHABLE.
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Four rungs, highest first. Take the highest one you can reach; a lower rung is
|
|
16
|
+
a fallback you name, not a preference you exercise.
|
|
17
|
+
|
|
18
|
+
| # | Rung | What it is | When it is the right rung |
|
|
19
|
+
|---|---|---|---|
|
|
20
|
+
| 1 | **Provided source files** | The artifact itself — an archive, an attached `design.html`, a token sidecar, a repo the user pointed at | Whenever the user handed something over. Read it *before* the first write. |
|
|
21
|
+
| 2 | **Source read through any channel** | The same code reached indirectly — a repository read, or DOM / stylesheets / scripts pulled through the user's own connected browser tools | The artifact is live rather than attached (a URL, a staging page, a preview build) |
|
|
22
|
+
| 3 | **Structured snapshot** | An accessibility tree or equivalent structured dump — text, roles, hierarchy, no pixels | Source is genuinely unreachable, but structure is not |
|
|
23
|
+
| 4 | **Screenshot** | Rendered pixels | Nothing above is reachable, **or** the thing being checked only exists once rendered |
|
|
24
|
+
|
|
25
|
+
**What rung 4 is legitimately for**, and this is not a grudging exception:
|
|
26
|
+
visual validation after building, layout collisions, contrast as actually
|
|
27
|
+
rendered, and content that only exists dynamically. The failure this ladder
|
|
28
|
+
names is not *using* a screenshot — it is using one **as the data basis while
|
|
29
|
+
rung 1 or 2 was sitting right there**, which is how a port ends up with the
|
|
30
|
+
right colours and none of the behaviour.
|
|
31
|
+
|
|
32
|
+
**The ladder governs where data comes from, never whether defects may be
|
|
33
|
+
fixed.** Reading the source and improving it is allowed and often correct;
|
|
34
|
+
reading the source is what makes an improvement a decision rather than a guess.
|
|
35
|
+
|
|
36
|
+
Two consequences worth stating because they are the ones agents get backwards:
|
|
37
|
+
|
|
38
|
+
- **A rendered HTML file is still a code artifact.** Opening it in a browser
|
|
39
|
+
does not demote it to rung 4; the file is still rung 1. What the browser adds
|
|
40
|
+
is validation, not input.
|
|
41
|
+
- **Degrading is honest, silence is not.** When you build from rung 3 or 4, say
|
|
42
|
+
which rung you used and why the higher ones were unreachable. An unscoped
|
|
43
|
+
"matches the design" over a screenshot-derived build is a verdict without
|
|
44
|
+
evidence (`design-review` § verdict scoping).
|
|
45
|
+
|
|
46
|
+
Regression witness: `daf-source-over-screenshot`.
|
|
47
|
+
|
|
48
|
+
## Adopt the code — re-derivation is a deviation
|
|
49
|
+
|
|
50
|
+
Where the artifact's own markup, CSS, or JS is stack-compatible, **adapting that
|
|
51
|
+
code is the default**. Writing an equivalent from scratch is a **deviation** and
|
|
52
|
+
carries the same obligation as a swapped control: surface it, get confirmation,
|
|
53
|
+
do not just do it.
|
|
54
|
+
|
|
55
|
+
Stack translation is not re-derivation. Porting the artifact's structure into
|
|
56
|
+
Blade, JSX or a template language translates *that* structure — it does not
|
|
57
|
+
license a new one. If your output's element tree cannot be walked next to the
|
|
58
|
+
artifact's, you re-derived.
|
|
59
|
+
|
|
60
|
+
Why this needs saying at all: the visible half of a port (colours, type,
|
|
61
|
+
spacing) is what a reviewer checks, and it survives a from-scratch rewrite. The
|
|
62
|
+
half that does not survive is the behaviour — event handlers, keyframes, ARIA
|
|
63
|
+
wiring, focus order — and its absence is invisible in a screenshot comparison.
|
|
64
|
+
"HTML not adopted, worse markup written from scratch, missing JavaScript" is one
|
|
65
|
+
failure, not three.
|
|
66
|
+
|
|
67
|
+
### The scope line — where `code-provenance` ends and this begins
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
A USER-SUPPLIED DESIGN ARTIFACT IS THE USER'S OWN MATERIAL, NOT THIRD-PARTY
|
|
71
|
+
EXTERNAL CODE. ADOPTING IT IS NOT A BORROW.
|
|
72
|
+
THIRD-PARTY CODE THAT MERELY ARRIVES THROUGH A HANDOVER STAYS UNDER
|
|
73
|
+
`code-provenance` IN FULL.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Without this line the two rules contradict each other on the same act:
|
|
77
|
+
[`code-provenance`](../../src/rules/code-provenance.md) opens with `NEVER ADOPT
|
|
78
|
+
EXTERNAL CODE VERBATIM` and routes any conscious borrow through a licence check
|
|
79
|
+
plus a ledger entry, while the duty above says adapt the artifact's code.
|
|
80
|
+
Whichever the agent followed, it would be violating a rule, and no gate can
|
|
81
|
+
arbitrate between two Iron Laws.
|
|
82
|
+
|
|
83
|
+
The resolution weakens neither, and it is not new: it is the carve-out
|
|
84
|
+
[`content-quoting-floor`](../../src/rules/content-quoting-floor.md) already
|
|
85
|
+
makes for user-owned text — *"content the user wrote, pasted, or explicitly
|
|
86
|
+
authorized for verbatim use is not an external source"*. A design artifact the
|
|
87
|
+
user hands over is that same category, in markup.
|
|
88
|
+
|
|
89
|
+
**What stays under `code-provenance` in full**, so the carve-out cannot be read
|
|
90
|
+
as a hole:
|
|
91
|
+
|
|
92
|
+
- A vendored component, a licensed template, or a third-party library that
|
|
93
|
+
happens to be *inside* the handover. Arriving through a design handover
|
|
94
|
+
changes nothing about its licence.
|
|
95
|
+
- Code the artifact itself borrowed from somewhere identifiable.
|
|
96
|
+
- Anything you reach for *beyond* the artifact while implementing it.
|
|
97
|
+
|
|
98
|
+
The discriminator is authorship, not delivery: did the user hand you their own
|
|
99
|
+
material, or did they hand you a container with someone else's material in it?
|
|
100
|
+
|
|
101
|
+
Regression witness: `daf-rederive-is-deviation`.
|
|
102
|
+
|
|
7
103
|
## Surgical visual edits
|
|
8
104
|
|
|
9
105
|
A request to change one visual thing — a colour, a label, a single element — is
|
|
@@ -64,7 +160,8 @@ brand evidence**. The design-surface instance of the no-invented-facts floor.
|
|
|
64
160
|
## Provided-artifact precedence
|
|
65
161
|
|
|
66
162
|
```
|
|
67
|
-
PROVIDED ARTIFACT > ANTI-SLOP > HOUSE TASTE
|
|
163
|
+
PROVIDED ARTIFACT > ANTI-SLOP > HOUSE TASTE
|
|
164
|
+
> ANY GENERATIVE DESIGN-SYSTEM TOOLING, FIRST- OR THIRD-PARTY.
|
|
68
165
|
THE EXEMPTION COVERS ONLY DECISIONS THE ARTIFACT ACTUALLY COVERS.
|
|
69
166
|
IT NEVER COVERS GENERATIVE WORK IN THE SAME RUN.
|
|
70
167
|
```
|
|
@@ -94,6 +191,23 @@ nothing acts on them.
|
|
|
94
191
|
the consumer's own brand (`brand-source-of-truth`). Artifact-vs-brand
|
|
95
192
|
conflicts are surfaced, never merged.
|
|
96
193
|
|
|
194
|
+
### The precedence chain's fourth member, and why it is not obvious
|
|
195
|
+
|
|
196
|
+
A generative design-system
|
|
197
|
+
skill — this suite's own or a third party's installed beside it — can carry an
|
|
198
|
+
instruction of the shape *"always generate a design system first"*. On a
|
|
199
|
+
greenfield brief that is right. On a **port** it is the same error the anti-slop
|
|
200
|
+
catalog makes: it argues the agent out of a decision the user already made, and
|
|
201
|
+
it does so from a step that runs *before* the artifact is even read, so nothing
|
|
202
|
+
downstream ever gets the chance to override it. A generative step's output may
|
|
203
|
+
inform decisions the artifact leaves open — states it never showed, a breakpoint
|
|
204
|
+
it never specified — and nothing more. It never re-opens a decision the artifact
|
|
205
|
+
carries.
|
|
206
|
+
|
|
207
|
+
This is a precedence clause, not a ban: the generative tooling stays correct
|
|
208
|
+
where it was already correct. What it loses is the authority to run *instead of*
|
|
209
|
+
reading a supplied artifact.
|
|
210
|
+
|
|
97
211
|
**The mechanical half.** A review finding carries `artifact_covered: true`, and
|
|
98
212
|
the polish gate drops those from the round-driving set *before* the ceiling
|
|
99
213
|
check, so a port cannot burn its two rounds on findings it was never allowed to
|
|
@@ -125,7 +239,11 @@ labelled "not wired yet" note beats an invented redesign.
|
|
|
125
239
|
|
|
126
240
|
Behavioral baseline: the `daf-*` fixtures named above (edit preservation,
|
|
127
241
|
unwanted variations, redesign trigger, missing asset, external asset URL,
|
|
128
|
-
invented screenshot)
|
|
242
|
+
invented screenshot), plus the port family this guideline governs —
|
|
243
|
+
`daf-source-over-screenshot` (data basis), `daf-adhoc-port-coverage` (loss
|
|
244
|
+
reporting outside the engine), `daf-rederive-is-deviation` (adopt the code),
|
|
245
|
+
and `daf-handoff-bundle`, the bundle shape where a token sidecar makes
|
|
246
|
+
"honoured the contract" and "eyeballed the CSS" produce different artefacts.
|
|
129
247
|
|
|
130
248
|
## See also
|
|
131
249
|
|