@event4u/agent-config 14.23.0 → 16.0.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +144 -152
- package/README.md +1 -1
- package/dist/agent-src/commands/agent-handoff.md +8 -7
- package/dist/agent-src/commands/agents/init.md +1 -1
- package/dist/agent-src/commands/agents/user/accept.md +4 -4
- package/dist/agent-src/commands/agents/user/delete.md +2 -2
- package/dist/agent-src/commands/agents/user/init.md +3 -3
- package/dist/agent-src/commands/agents/user/review.md +3 -3
- package/dist/agent-src/commands/agents/user/show.md +3 -3
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +6 -6
- package/dist/agent-src/commands/analytics/prune.md +1 -1
- package/dist/agent-src/commands/analytics/show.md +2 -2
- package/dist/agent-src/commands/analyze/decision.md +2 -2
- package/dist/agent-src/commands/analyze/inbox.md +5 -5
- package/dist/agent-src/commands/analyze/incident.md +3 -3
- package/dist/agent-src/commands/analyze/near-miss.md +3 -3
- package/dist/agent-src/commands/analyze/postmortem.md +4 -4
- package/dist/agent-src/commands/analyze/premortem.md +2 -2
- package/dist/agent-src/commands/analyze.md +2 -2
- package/dist/agent-src/commands/bug/fix.md +1 -1
- package/dist/agent-src/commands/bug/investigate.md +2 -2
- package/dist/agent-src/commands/cost/profile.md +3 -3
- package/dist/agent-src/commands/design.md +1 -1
- package/dist/agent-src/commands/feature/explore.md +1 -1
- package/dist/agent-src/commands/feature/plan.md +2 -2
- package/dist/agent-src/commands/feature/roadmap.md +2 -2
- package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
- package/dist/agent-src/commands/ghostwriter/list.md +1 -1
- package/dist/agent-src/commands/ghostwriter/show.md +1 -1
- package/dist/agent-src/commands/ghostwriter/write.md +9 -9
- package/dist/agent-src/commands/humanize.md +6 -6
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/judge/solo.md +1 -1
- package/dist/agent-src/commands/judge.md +1 -1
- package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
- package/dist/agent-src/commands/knowledge/forget.md +1 -1
- package/dist/agent-src/commands/knowledge/ingest.md +2 -2
- package/dist/agent-src/commands/knowledge/list.md +1 -1
- package/dist/agent-src/commands/memory/add.md +3 -3
- package/dist/agent-src/commands/memory/load.md +4 -4
- package/dist/agent-src/commands/memory/mine-session.md +1 -1
- package/dist/agent-src/commands/memory/promote.md +4 -4
- package/dist/agent-src/commands/memory/propose.md +2 -2
- package/dist/agent-src/commands/mode.md +5 -5
- package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
- package/dist/agent-src/commands/post-as/me.md +7 -7
- package/dist/agent-src/commands/pr/create.md +1 -1
- package/dist/agent-src/commands/pr/merge.md +1 -1
- package/dist/agent-src/commands/profile/activate.md +1 -1
- package/dist/agent-src/commands/profile/show.md +1 -1
- package/dist/agent-src/commands/research/deep.md +2 -2
- package/dist/agent-src/commands/research/report.md +2 -2
- package/dist/agent-src/commands/review/changes.md +1 -1
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/create.md +4 -3
- package/dist/agent-src/commands/roadmap/materialize.md +2 -2
- package/dist/agent-src/commands/roadmap/next.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +2 -2
- package/dist/agent-src/commands/security-audit-config.md +3 -3
- package/dist/agent-src/commands/skill/preview.md +1 -1
- package/dist/agent-src/commands/skills/discover.md +1 -1
- package/dist/agent-src/commands/sync/agent-settings.md +2 -2
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tests/create.md +1 -1
- package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
- package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +51 -1
- package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +1 -1
- package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
- package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
- package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
- package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
- package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
- package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
- package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
- package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
- package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
- package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
- package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
- package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
- package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
- package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
- package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
- package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
- package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
- package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
- package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
- package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
- package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
- package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
- package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
- package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
- package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
- package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
- package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
- package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
- package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
- package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
- package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
- package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
- package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
- package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
- package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
- package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
- package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
- package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
- package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
- package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
- package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
- package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
- package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
- package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
- package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
- package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
- package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
- package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
- package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
- package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
- package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
- package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
- package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
- package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
- package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
- package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
- package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
- package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
- package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
- package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
- package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
- package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
- package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
- package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
- package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
- package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
- package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
- package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
- package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
- package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
- package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
- package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
- package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
- package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
- package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
- package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
- package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
- package/dist/agent-src/guidelines/code-clarity.md +350 -0
- package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
- package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
- package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
- package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
- package/dist/agent-src/guidelines/design-canon.md +63 -0
- package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
- package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
- package/dist/agent-src/guidelines/design-modes.md +143 -0
- package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
- package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
- package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
- package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
- package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
- package/dist/agent-src/guidelines/php/api-design.md +115 -0
- package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
- package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
- package/dist/agent-src/guidelines/php/controllers.md +90 -0
- package/dist/agent-src/guidelines/php/database.md +194 -0
- package/dist/agent-src/guidelines/php/eloquent.md +208 -0
- package/dist/agent-src/guidelines/php/flux.md +80 -0
- package/dist/agent-src/guidelines/php/general.md +207 -0
- package/dist/agent-src/guidelines/php/git.md +164 -0
- package/dist/agent-src/guidelines/php/jobs.md +111 -0
- package/dist/agent-src/guidelines/php/livewire.md +71 -0
- package/dist/agent-src/guidelines/php/logging.md +79 -0
- package/dist/agent-src/guidelines/php/naming.md +89 -0
- package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
- package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
- package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
- package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
- package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
- package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
- package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
- package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
- package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
- package/dist/agent-src/guidelines/php/patterns.md +28 -0
- package/dist/agent-src/guidelines/php/performance.md +92 -0
- package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
- package/dist/agent-src/guidelines/php/resources.md +100 -0
- package/dist/agent-src/guidelines/php/security.md +110 -0
- package/dist/agent-src/guidelines/php/sql.md +97 -0
- package/dist/agent-src/guidelines/php/validations.md +119 -0
- package/dist/agent-src/guidelines/php/websocket.md +100 -0
- package/dist/agent-src/guidelines/prompt-templates.md +189 -0
- package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
- package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
- package/dist/agent-src/personas/README.md +1 -1
- package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
- package/dist/agent-src/personas/product-owner.md +1 -1
- package/dist/agent-src/rules/active-remediation.md +1 -1
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
- package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
- package/dist/agent-src/rules/code-comment-discipline.md +2 -2
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/content-quoting-floor.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +5 -5
- package/dist/agent-src/rules/cross-source-consistency.md +1 -1
- package/dist/agent-src/rules/design-fidelity.md +36 -46
- package/dist/agent-src/rules/direct-answers.md +2 -2
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/evaluator-independence.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/icon-consistency.md +5 -1
- package/dist/agent-src/rules/improve-before-implement.md +1 -1
- package/dist/agent-src/rules/language-and-tone.md +3 -3
- package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
- package/dist/agent-src/rules/notes-first-reasoning.md +2 -2
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/role-mode-adherence.md +2 -2
- package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
- package/dist/agent-src/rules/size-enforcement.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +2 -2
- package/dist/agent-src/rules/think-before-action.md +1 -1
- package/dist/agent-src/rules/token-efficiency.md +7 -5
- package/dist/agent-src/rules/ui-audit-gate.md +3 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
- package/dist/agent-src/rules/user-interaction.md +31 -30
- package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
- package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
- package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
- package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
- package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
- package/dist/agent-src/skills/code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
- package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
- package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
- package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
- package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
- package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
- package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
- package/dist/agent-src/skills/design-review/SKILL.md +4 -4
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
- package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
- package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
- package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
- package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
- package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +9 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
- package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
- package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
- package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
- package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
- package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
- package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
- package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
- package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
- package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
- package/dist/agent-src/skills/iconography/SKILL.md +3 -3
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
- package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
- package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
- package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
- package/dist/agent-src/skills/org-design/SKILL.md +1 -1
- package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
- package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
- package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
- package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
- package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
- package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
- package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
- package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
- package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
- package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +11 -5
- package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
- package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
- package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
- package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
- package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
- package/dist/agent-src/templates/agent-settings.md +6 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
- package/dist/agent-src/templates/copilot-instructions.md +1 -1
- package/dist/agent-src/templates/roadmaps.md +1 -1
- package/dist/agent-src/templates/scripts/README.md +2 -2
- package/dist/agent-src/user-types/_template/user-type.md +1 -1
- package/dist/cli-delegate/check_update_banner.js +12 -1
- package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
- package/dist/cli-delegate/{chunk-IAI3XL43.js → chunk-3FKR64R5.js} +22 -6
- package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
- package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
- package/dist/cli-delegate/{chunk-KCNTUSPI.js → chunk-AK6HODNQ.js} +4 -4
- package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
- package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-H32DGUJH.js} +15 -84
- package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
- package/dist/cli-delegate/chunk-NUHLI2RX.js +80 -0
- package/dist/cli-delegate/{chunk-TYSY33MD.js → chunk-QJWAUMJW.js} +12 -2
- package/dist/cli-delegate/{chunk-2KKXJW25.js → chunk-S3VFXMTM.js} +1 -1
- package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
- package/dist/cli-delegate/cmd_analyze_session.js +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +1 -1
- package/dist/cli-delegate/cmd_conformance.js +834 -275
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_explain.js +5 -3
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +6 -6
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +1 -1
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +3 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_route_audit.js +3 -3
- package/dist/cli-delegate/cmd_route_explain.js +1 -1
- package/dist/cli-delegate/cmd_session_recycle.js +3 -3
- package/dist/cli-delegate/cmd_settings_get.js +15 -9
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +54 -11
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +25 -78
- 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 +5 -7
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +4 -6
- package/dist/hooks/dispatch.js +9684 -9304
- package/dist/install/install.mjs +36 -8
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +2147 -1470
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +73 -0
- package/dist/scripts/_lib/agent_src.js +20 -0
- package/dist/scripts/_lib/guidelines_lane.js +158 -0
- package/dist/scripts/_lib/installed_lock.js +1 -1
- package/dist/scripts/condense.js +2 -5
- package/dist/server/io/yamlIO.js +175 -17
- package/dist/server/schemas/settings.js +18 -4
- package/dist/shared/settingsSurface.js +6 -1
- package/docs/contracts/settings-classes.md +18 -9
- package/docs/guidelines/abstraction-thresholds.md +35 -0
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
- package/docs/guidelines/agent-infra/false-green.md +2 -2
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
- package/docs/guidelines/design-fidelity-mechanics.md +4 -0
- package/docs/guidelines/design-fidelity-routing.md +78 -0
- package/docs/guidelines/design-reconciliation.md +172 -0
- package/docs/guidelines/gtm-handoff.md +2 -2
- package/docs/guidelines/wing4-handoff.md +2 -2
- package/package.json +7 -3
- package/src/config/agent-settings.template.yml +55 -8
- package/src/config/ci-local-parity.yml +34 -0
- package/src/config/continuity-surface.json +11 -32
- package/src/config/gate-coverage.yml +31 -8
- package/src/config/gate-reachability-exemptions.json +1 -0
- package/src/config/gate-violation-baselines.json +3 -3
- package/src/config/hook-token-budget.json +1 -1
- package/src/config/host-injection-effect.json +2 -2
- package/src/config/pack-size-budget.json +55 -4
- package/src/config/platform-anchor.json +47 -0
- package/src/config/preamble-payload-budget.json +12 -8
- package/src/config/preamble-payload-exceptions.json +28 -0
- package/src/config/publish-surface.json +4 -2
- package/src/config/ratification-policy.json +7 -0
- package/src/config/rule-stub-ceilings.json +16 -9
- package/src/scripts/_cli/cmd_settings_get.ts +22 -7
- package/src/scripts/_dispatch.bash +3 -1
- package/src/scripts/_lib/agent_settings.ts +85 -0
- package/src/scripts/_lib/agent_src.ts +21 -0
- package/src/scripts/_lib/artifact_maturity.ts +242 -0
- package/src/scripts/_lib/base_ref_payload.ts +315 -0
- package/src/scripts/_lib/conformance_report.ts +403 -0
- package/src/scripts/_lib/continuity_writer.ts +72 -13
- package/src/scripts/_lib/design_system_import.ts +20 -0
- package/src/scripts/_lib/design_tolerance.ts +281 -0
- package/src/scripts/_lib/dropped_decision.ts +142 -0
- package/src/scripts/_lib/guidelines_lane.ts +164 -0
- package/src/scripts/_lib/installed_lock.ts +1 -1
- package/src/scripts/_lib/measured_payload_ceiling.ts +424 -0
- package/src/scripts/_lib/obligation_frequency.ts +2 -3
- package/src/scripts/_lib/payload_catalogue_completeness.ts +211 -0
- package/src/scripts/_lib/platform_anchor.ts +1053 -0
- package/src/scripts/_lib/ratification_artifact.ts +278 -0
- package/src/scripts/_lib/release_findings_ingest.ts +324 -0
- package/src/scripts/_lib/release_tag_dispatch.ts +63 -0
- package/src/scripts/_lib/review_baseline.ts +254 -0
- package/src/scripts/_lib/review_skipped_record.ts +61 -1
- package/src/scripts/_lib/security_lint.ts +23 -2
- package/src/scripts/_lib/self_repair.ts +21 -0
- package/src/scripts/_lib/session_index_trust.ts +42 -1
- package/src/scripts/_lib/standing_bound_ratchet.ts +267 -88
- package/src/scripts/_lib/tolerance_shadow.ts +177 -0
- package/src/scripts/_lib/turn_end_refusals.ts +51 -4
- package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
- package/src/scripts/autonomy_friction_traffic.ts +379 -0
- package/src/scripts/check_beta_review_markers.ts +35 -4
- package/src/scripts/check_finding_dispositions.ts +167 -16
- package/src/scripts/check_held_object_arrivals.ts +381 -0
- package/src/scripts/check_kernel_edit_ratified.ts +462 -0
- package/src/scripts/check_loss_class_declared.ts +793 -46
- package/src/scripts/check_platform_anchor.ts +390 -0
- package/src/scripts/check_preamble_payload_budget.ts +672 -107
- package/src/scripts/check_projected_rule_routes.ts +395 -0
- package/src/scripts/check_release_published.ts +1 -1
- package/src/scripts/check_reply_consistency.ts +86 -17
- package/src/scripts/code_graph/cli.ts +6 -0
- package/src/scripts/condense.ts +2 -6
- package/src/scripts/generate_host_cost_table.ts +354 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +74 -30
- package/src/scripts/hooks/block_kernel_rule_writes.ts +12 -2
- package/src/scripts/hooks/category_a.ts +1 -1
- package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/end_review_nudge_hook.ts +101 -21
- package/src/scripts/hooks/review_baseline_hook.ts +130 -0
- package/src/scripts/hooks/session_eol_hook.ts +68 -154
- package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
- package/src/scripts/hooks/turn_end_gate_hook.ts +232 -14
- package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
- package/src/scripts/hooks_doctor.ts +4 -1
- package/src/scripts/hot_context_hook.ts +41 -401
- package/src/scripts/install.ts +1 -1
- package/src/scripts/interruption_report.ts +8 -2
- package/src/scripts/janitor.ts +8 -1
- package/src/scripts/lint_evidence_artifacts.ts +1 -0
- package/src/scripts/lint_knowledge_scale.ts +0 -26
- package/src/scripts/measure_turn_end_gate.ts +302 -5
- package/src/scripts/memory_lookup.ts +9 -9
- package/src/scripts/release.ts +52 -64
- package/src/scripts/release_drill.ts +193 -14
- package/src/scripts/release_env.ts +1 -1
- package/src/scripts/release_publication.ts +1 -1
- package/src/scripts/report_held_object_arrivals.ts +456 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/session_memory_index.ts +5 -0
- package/src/scripts/sync_agent_settings.ts +394 -12
- package/src/server/io/yamlIO.ts +175 -17
- package/src/server/schemas/settings.ts +25 -5
- package/src/shared/settingsSurface.ts +13 -2
- package/src/templates/compact-instructions.md +8 -3
- package/dist/agent-src/commands/chat-history/import.md +0 -170
- package/dist/agent-src/commands/chat-history.md +0 -63
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Design Fidelity — Mechanics
|
|
2
|
+
|
|
3
|
+
> Surgical-edit discipline, asset & imagery floor, and the failure-mode catalog for the `design-fidelity` rule
|
|
4
|
+
|
|
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
|
+
|
|
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
|
+
## URL / live-page handover — extraction into files, before the first UI write
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
A HANDOVER THAT ARRIVES AS A URL IS STILL RUNG 2, NOT RUNG 4.
|
|
52
|
+
EXTRACT THROUGH THE USER'S CONNECTED BROWSER TOOLS INTO FILES
|
|
53
|
+
BEFORE ANY UI WRITE. A SCREENSHOT TAKEN DURING EXTRACTION
|
|
54
|
+
CARRIES QA DUTY ONLY — IT IS NEVER THE THING YOU BUILD FROM.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
A published artifact link, a builder's share link, a staging or `localhost`
|
|
58
|
+
page: rung 2 above is reachable, so rung 4 is not the fallback it looks like.
|
|
59
|
+
Extraction lands in the existing `design-system.json` contract under the
|
|
60
|
+
`.claude/design-system/` prefix the rule already routes on — no new artifact
|
|
61
|
+
shape — and the offline `/design-system:import` adapter consumes it. The package
|
|
62
|
+
ships the contract, the adapter and the instructions; it ships no crawler,
|
|
63
|
+
Playwright runtime or font-bundler.
|
|
64
|
+
|
|
65
|
+
Where the extraction goes, what consumes it, the retrieval order that keeps the
|
|
66
|
+
source alive across sessions, the producer sentence, and the honest coverage
|
|
67
|
+
gap: [`design-handover-extraction`](design-handover-extraction.md).
|
|
68
|
+
|
|
69
|
+
## Adopt the code — re-derivation is a deviation
|
|
70
|
+
|
|
71
|
+
Where the artifact's own markup, CSS, or JS is stack-compatible, **adapting that
|
|
72
|
+
code is the default**. Writing an equivalent from scratch is a **deviation** and
|
|
73
|
+
carries the same obligation as a swapped control: surface it, get confirmation,
|
|
74
|
+
do not just do it.
|
|
75
|
+
|
|
76
|
+
Stack translation is not re-derivation. Porting the artifact's structure into
|
|
77
|
+
Blade, JSX or a template language translates *that* structure — it does not
|
|
78
|
+
license a new one. If your output's element tree cannot be walked next to the
|
|
79
|
+
artifact's, you re-derived.
|
|
80
|
+
|
|
81
|
+
Why this needs saying at all: the visible half of a port (colours, type,
|
|
82
|
+
spacing) is what a reviewer checks, and it survives a from-scratch rewrite. The
|
|
83
|
+
half that does not survive is the behaviour — event handlers, keyframes, ARIA
|
|
84
|
+
wiring, focus order — and its absence is invisible in a screenshot comparison.
|
|
85
|
+
"HTML not adopted, worse markup written from scratch, missing JavaScript" is one
|
|
86
|
+
failure, not three.
|
|
87
|
+
|
|
88
|
+
### The scope line — where `code-provenance` ends and this begins
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
A USER-SUPPLIED DESIGN ARTIFACT IS THE USER'S OWN MATERIAL, NOT THIRD-PARTY
|
|
92
|
+
EXTERNAL CODE. ADOPTING IT IS NOT A BORROW.
|
|
93
|
+
THIRD-PARTY CODE THAT MERELY ARRIVES THROUGH A HANDOVER STAYS UNDER
|
|
94
|
+
`code-provenance` IN FULL.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Without this line the two rules contradict each other on the same act:
|
|
98
|
+
[`code-provenance`](../rules/code-provenance.md) opens with `NEVER ADOPT
|
|
99
|
+
EXTERNAL CODE VERBATIM` and routes any conscious borrow through a licence check
|
|
100
|
+
plus a ledger entry, while the duty above says adapt the artifact's code.
|
|
101
|
+
Whichever the agent followed, it would be violating a rule, and no gate can
|
|
102
|
+
arbitrate between two Iron Laws.
|
|
103
|
+
|
|
104
|
+
The resolution weakens neither, and it is not new: it is the carve-out
|
|
105
|
+
[`content-quoting-floor`](../rules/content-quoting-floor.md) already
|
|
106
|
+
makes for user-owned text — *"content the user wrote, pasted, or explicitly
|
|
107
|
+
authorized for verbatim use is not an external source"*. A design artifact the
|
|
108
|
+
user hands over is that same category, in markup.
|
|
109
|
+
|
|
110
|
+
**What stays under `code-provenance` in full**, so the carve-out cannot be read
|
|
111
|
+
as a hole:
|
|
112
|
+
|
|
113
|
+
- A vendored component, a licensed template, or a third-party library that
|
|
114
|
+
happens to be *inside* the handover. Arriving through a design handover
|
|
115
|
+
changes nothing about its licence.
|
|
116
|
+
- Code the artifact itself borrowed from somewhere identifiable.
|
|
117
|
+
- Anything you reach for *beyond* the artifact while implementing it.
|
|
118
|
+
|
|
119
|
+
The discriminator is authorship, not delivery: did the user hand you their own
|
|
120
|
+
material, or did they hand you a container with someone else's material in it?
|
|
121
|
+
|
|
122
|
+
Regression witness: `daf-rederive-is-deviation`.
|
|
123
|
+
|
|
124
|
+
## Surgical visual edits
|
|
125
|
+
|
|
126
|
+
A request to change one visual thing — a colour, a label, a single element — is
|
|
127
|
+
a **targeted edit**, not a redesign licence. Apply the same
|
|
128
|
+
`minimal-safe-diff` discipline to design work that backend edits have
|
|
129
|
+
always owed.
|
|
130
|
+
|
|
131
|
+
- **Change only the semantic target.** Preserve the surrounding layout,
|
|
132
|
+
spacing, typography, dimensions, content, animation, and interaction states.
|
|
133
|
+
Do not rewrite the component, reflow the section, or "modernise" neighbours
|
|
134
|
+
while you are in there. (fixtures: `daf-edit-preservation`, `daf-unwanted-variations`.)
|
|
135
|
+
- **A broader redesign needs an explicit trigger.** Only phrases like *"new
|
|
136
|
+
direction"*, *"from scratch"*, *"make it feel premium"*, *"rework the flow"*,
|
|
137
|
+
or *"give me variations / options"* license a from-scratch rework. Absent such
|
|
138
|
+
a phrase, a "fix / change / update the X" request is surgical — when unsure
|
|
139
|
+
which, ask (`ask-when-uncertain`). (fixture: `daf-redesign-trigger`.)
|
|
140
|
+
- **Preserve stable anchors.** Where the host exposes DOM/comment metadata, keep
|
|
141
|
+
comment anchors and screen labels intact so the edit stays locatable. Where
|
|
142
|
+
the host has no such surface, preserve stable semantic anchors already present
|
|
143
|
+
in source comments / `data-*` attributes — never strip them, and do not invent
|
|
144
|
+
new ones.
|
|
145
|
+
|
|
146
|
+
## Asset & imagery discipline
|
|
147
|
+
|
|
148
|
+
Visual artifacts carry **real assets or honest placeholders — never fabricated
|
|
149
|
+
brand evidence**. The design-surface instance of the no-invented-facts floor.
|
|
150
|
+
|
|
151
|
+
Owned-asset paths, the third-party delivery decision this repository pins to
|
|
152
|
+
self-hosting ([`ADR-205`](../decisions/ADR-205-webfont-delivery-ownership.md)),
|
|
153
|
+
the real-imagery-as-proof floor, the iconography floor and the
|
|
154
|
+
no-unrequested-filler clause — each with its `daf-*` fixture:
|
|
155
|
+
[`design-asset-discipline`](design-asset-discipline.md).
|
|
156
|
+
|
|
157
|
+
## Artefact maturity — the second axis
|
|
158
|
+
|
|
159
|
+
The Iron Law and both discriminator clauses stay in
|
|
160
|
+
[`design-fidelity`](../rules/design-fidelity.md) § Two axes; this is the table.
|
|
161
|
+
|
|
162
|
+
| The artefact declares | The spec is | The spec is NOT |
|
|
163
|
+
|---|---|---|
|
|
164
|
+
| low fidelity — greyscale, box-and-line, placeholder copy | layout · element set · hierarchy · states shown | grays · placeholder text · borders · exact spacing |
|
|
165
|
+
| finished — colour, real copy, real assets | everything visible (the 1:1 floor, unchanged) | — |
|
|
166
|
+
|
|
167
|
+
Grounded in [`wireframe`](../skills/wireframe/SKILL.md) § Gotchas. The near-miss
|
|
168
|
+
class is pinned in `ROUTING_MATRIX`, its rationale beside the assertions in
|
|
169
|
+
`design_fidelity_routing.test.ts`.
|
|
170
|
+
|
|
171
|
+
## Provided-artifact precedence
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
PROVIDED ARTIFACT > ANTI-SLOP > HOUSE TASTE
|
|
175
|
+
> ANY GENERATIVE DESIGN-SYSTEM TOOLING, FIRST- OR THIRD-PARTY.
|
|
176
|
+
THE EXEMPTION COVERS ONLY DECISIONS THE ARTIFACT ACTUALLY COVERS.
|
|
177
|
+
IT NEVER COVERS GENERATIVE WORK IN THE SAME RUN.
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
The anti-slop catalog exists to stop an agent's *first impulse* from becoming
|
|
181
|
+
the design. A handed-over artifact is not a first impulse — it is a decision
|
|
182
|
+
the user already made. Applied to a port, the catalog inverts: it argues the
|
|
183
|
+
agent out of the spec it was told to reproduce.
|
|
184
|
+
|
|
185
|
+
Concretely, a faithful port of a cream/terracotta artifact trips
|
|
186
|
+
`slop-c5-cream-palette`, and the artifact's own copy trips
|
|
187
|
+
`slop-cp1-em-dash`. Both findings are **correct about the pattern and wrong
|
|
188
|
+
about the action**. On a port they are cited as *"matches provided spec"* and
|
|
189
|
+
nothing acts on them.
|
|
190
|
+
|
|
191
|
+
**Scope — three things this does NOT license:**
|
|
192
|
+
|
|
193
|
+
1. **Decisions the artifact does not cover.** A port usually needs states the
|
|
194
|
+
source never showed (loading, error, empty). Those are generative, and the
|
|
195
|
+
full anti-slop scan applies to them. "The artifact was cream" does not
|
|
196
|
+
exempt an invented empty state from L1 or V1.
|
|
197
|
+
2. **Silence.** An artifact-covered finding stays in the review output with its
|
|
198
|
+
rule id, marked informational. Suppressing it outright would hide from the
|
|
199
|
+
user that their spec carries a known tell — which they may want to know
|
|
200
|
+
before shipping it.
|
|
201
|
+
3. **Registered brand tokens.** A supplied artifact outranks house taste, not
|
|
202
|
+
the consumer's own brand (`brand-source-of-truth`). Artifact-vs-brand
|
|
203
|
+
conflicts are surfaced, never merged.
|
|
204
|
+
|
|
205
|
+
### The precedence chain's fourth member, and why it is not obvious
|
|
206
|
+
|
|
207
|
+
A generative design-system
|
|
208
|
+
skill — this suite's own or a third party's installed beside it — can carry an
|
|
209
|
+
instruction of the shape *"always generate a design system first"*. On a
|
|
210
|
+
greenfield brief that is right. On a **port** it is the same error the anti-slop
|
|
211
|
+
catalog makes: it argues the agent out of a decision the user already made, and
|
|
212
|
+
it does so from a step that runs *before* the artifact is even read, so nothing
|
|
213
|
+
downstream ever gets the chance to override it. A generative step's output may
|
|
214
|
+
inform decisions the artifact leaves open — states it never showed, a breakpoint
|
|
215
|
+
it never specified — and nothing more. It never re-opens a decision the artifact
|
|
216
|
+
carries.
|
|
217
|
+
|
|
218
|
+
This is a precedence clause, not a ban: the generative tooling stays correct
|
|
219
|
+
where it was already correct. What it loses is the authority to run *instead of*
|
|
220
|
+
reading a supplied artifact.
|
|
221
|
+
|
|
222
|
+
**The mechanical half.** A review finding carries `artifact_covered: true`, and
|
|
223
|
+
the polish gate drops those from the round-driving set *before* the ceiling
|
|
224
|
+
check, so a port cannot burn its two rounds on findings it was never allowed to
|
|
225
|
+
act on (`directives/ui/polish.ts`, `partition_artifact_covered`). Marking rather
|
|
226
|
+
than deleting is deliberate: the finding stays visible, only its authority to
|
|
227
|
+
force a round is removed. The burden sits with whoever sets the flag — an
|
|
228
|
+
unmarked finding is treated as actionable, so the default failure direction is
|
|
229
|
+
"we asked" rather than "we silently kept it".
|
|
230
|
+
|
|
231
|
+
Regression witness: `daf-slop-vs-provided`.
|
|
232
|
+
|
|
233
|
+
**Why the default is what it is, and why the 2026-07-31 council lock over this
|
|
234
|
+
loop cannot be discharged by measuring it:**
|
|
235
|
+
[`design-reconciliation § The 2026-07-31 lock`](design-reconciliation.md).
|
|
236
|
+
|
|
237
|
+
## Value-level provenance — the finer grain beside the flag
|
|
238
|
+
|
|
239
|
+
The block above is finding-level and stays the default: `artifact_covered` is a
|
|
240
|
+
boolean on a **finding**, and every consumer of it — `partition_artifact_covered`
|
|
241
|
+
and the ceiling check it feeds — is unchanged by this section.
|
|
242
|
+
|
|
243
|
+
What a per-finding boolean cannot answer is *"where did this `16px` come from"*.
|
|
244
|
+
The flag says a finding is answered by the artifact; it does not say which value
|
|
245
|
+
carried the expectation, so two rows that disagree about the same element look
|
|
246
|
+
identical to a reviewer.
|
|
247
|
+
|
|
248
|
+
`src/scripts/schemas/fidelity-measurement-sheet.schema.json` adds that grain and
|
|
249
|
+
nothing else: each measurement row carries `expectation_source` — a `kind`
|
|
250
|
+
ordered by authority (`provided_artifact` › `design_token` › `brand_token` ›
|
|
251
|
+
`house_heuristic` › `agent_inference`) plus a `ref` naming the token, `file:line`
|
|
252
|
+
or artefact anchor. `agent_inference` is the row a reviewer filters for.
|
|
253
|
+
|
|
254
|
+
Two boundaries, because this is an addition and not a replacement:
|
|
255
|
+
|
|
256
|
+
- **The coarse flag stays the default channel.** A row's optional
|
|
257
|
+
`expectation_source.artifact_covered` mirrors the flag for one value; it never
|
|
258
|
+
substitutes for setting the flag on the finding, and no gate reads it.
|
|
259
|
+
- **The ordering above is a mirror, not a second source of truth.** Precedence
|
|
260
|
+
is decided in the block above; a `kind` that disagreed with it would be a
|
|
261
|
+
defect in the schema, not a competing chain.
|
|
262
|
+
|
|
263
|
+
## Failure modes
|
|
264
|
+
|
|
265
|
+
- Swapping the prototype's font / typeface because another "reads better".
|
|
266
|
+
- Replacing a specified control (slider, stepper, chip) with a different control.
|
|
267
|
+
- Dropping or adding an element the prototype shows ("+", a send→stop toggle, a warning chip).
|
|
268
|
+
- Restructuring layout or moving sections "because the flow is better".
|
|
269
|
+
- Treating an internal "honesty gate" or "stub" concern as licence to redesign the UI.
|
|
270
|
+
- Re-running a redesign after the user already said "match the prototype".
|
|
271
|
+
|
|
272
|
+
## How to surface a deviation — do NOT execute it
|
|
273
|
+
|
|
274
|
+
Name what the spec shows, what you would change, and why — as a numbered option
|
|
275
|
+
per `user-interaction`. The user picks. Honesty about **behaviour** (a control
|
|
276
|
+
not yet wired) never licenses changing the **design**: a faithful visual plus a
|
|
277
|
+
labelled "not wired yet" note beats an invented redesign.
|
|
278
|
+
|
|
279
|
+
## Fixtures
|
|
280
|
+
|
|
281
|
+
Behavioral baseline: the `daf-*` fixtures named above (edit preservation,
|
|
282
|
+
unwanted variations, redesign trigger, missing asset, external asset URL,
|
|
283
|
+
invented screenshot), plus the port family this guideline governs —
|
|
284
|
+
`daf-source-over-screenshot` (data basis), `daf-adhoc-port-coverage` (loss
|
|
285
|
+
reporting outside the engine), `daf-rederive-is-deviation` (adopt the code),
|
|
286
|
+
and `daf-handoff-bundle`, the bundle shape where a token sidecar makes
|
|
287
|
+
"honoured the contract" and "eyeballed the CSS" produce different artefacts.
|
|
288
|
+
|
|
289
|
+
## See also
|
|
290
|
+
|
|
291
|
+
- `design-fidelity` (rule) — Iron Law + `design.fidelity_mode` strictness table.
|
|
292
|
+
- `brand-source-of-truth` / `brand-consistency` — same precedence shape, for registered brand tokens.
|
|
293
|
+
- [`design-modes.md`](design-modes.md) — brand vs product register discriminator.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Design-fidelity routing mechanics — how the trigger set is authored
|
|
2
|
+
|
|
3
|
+
Split out of [`design-fidelity-mechanics`](design-fidelity-mechanics.md) on
|
|
4
|
+
2026-09-09 under `check_depth_budget`'s 16,000-character per-file ceiling. It is
|
|
5
|
+
also a genuinely different subject: that guideline is read while PORTING an
|
|
6
|
+
artifact, and this one is read while EDITING the rule's own trigger set — which
|
|
7
|
+
happens rarely, by a maintainer, and never during a port.
|
|
8
|
+
|
|
9
|
+
## Routing mechanics
|
|
10
|
+
|
|
11
|
+
Migrated out of `design-fidelity.md` on 2026-09-09 under the council verdict on
|
|
12
|
+
`blocker: rule-body-cap` — a semantic migration that frees rule-body lines for
|
|
13
|
+
the operative pointers the same verdict requires, not an arbitrary line cut. The
|
|
14
|
+
rule keeps the obligations; this holds the reasoning behind them.
|
|
15
|
+
|
|
16
|
+
### The withdrawn builder-URL trigger
|
|
17
|
+
|
|
18
|
+
A page built in Lovable / v0 / bolt and handed over as a share link is a
|
|
19
|
+
finished spec, and `design-fidelity` does not route it. The obvious trigger was
|
|
20
|
+
tried and **withdrawn**: matching is plain lower-cased substring containment, so
|
|
21
|
+
`https://v0.dev/` also fires on `https://v0.dev/docs`, on a pricing page, and on
|
|
22
|
+
a changelog link — it would treat every mention of the tool's own site as a spec
|
|
23
|
+
handover. That is exactly the `claude.ai` failure the capability-URL trigger
|
|
24
|
+
exists to avoid, and by the rule's own standard it is worse than the gap it
|
|
25
|
+
closes. The alternatives are a bare-host keyword (broader still) or guessing
|
|
26
|
+
each vendor's share-path segment, and a trigger built on a guessed path is not
|
|
27
|
+
evidence.
|
|
28
|
+
|
|
29
|
+
**What closes it:** a verified share-path segment per vendor, or a
|
|
30
|
+
handover-word co-occurrence the matcher cannot express today. Until then the
|
|
31
|
+
class needs one word in the prompt, like any other unlisted filename.
|
|
32
|
+
`near-bare-host-mention` in `ROUTING_MATRIX` pins the bare-host direction silent
|
|
33
|
+
so a future attempt cannot reintroduce the broad form unnoticed.
|
|
34
|
+
|
|
35
|
+
### The trigger set, class by class
|
|
36
|
+
|
|
37
|
+
Phrase-heavy on the German side and on `artifact` deliberately: a bare
|
|
38
|
+
`artifact` keyword fires on *"the CI build artifact is 40 MB"*, which is CI
|
|
39
|
+
vocabulary and not a handover. `ROUTING_MATRIX` pins both halves — every class
|
|
40
|
+
that must route, and every near-miss that must stay silent (fixture
|
|
41
|
+
`daf-port-trigger-de`).
|
|
42
|
+
|
|
43
|
+
Each shipped class carries its own near-miss row, and the pairing is the
|
|
44
|
+
contract rather than a courtesy:
|
|
45
|
+
|
|
46
|
+
| Class | Its near-miss row | The direction that row tests |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `phrase: claude.site/artifacts` | `near-claude-ai-chat-link` | a bare `claude.ai` chat link is a conversation reference, not a spec |
|
|
49
|
+
| `path_prefix: .claude/design-system/` | `near-generic-design-system-dir` | a bare `design-system/` is a normal source folder in a large fraction of frontend repos |
|
|
50
|
+
| `file_pattern: *.dc.html` | `near-plain-html-open-file`, `near-dc-in-a-filename` | an ordinary `.html` file in the tree; a filename that merely contains the letters |
|
|
51
|
+
| the withdrawn builder URL | `near-bare-host-mention` | left behind on purpose, so the broad form stays pinned silent |
|
|
52
|
+
|
|
53
|
+
### Write the near-miss row first — and test the right direction
|
|
54
|
+
|
|
55
|
+
Extending the trigger set without adding a near-miss row is how an over-broad
|
|
56
|
+
trigger lands. The stronger half of the contract is *which* near-miss:
|
|
57
|
+
|
|
58
|
+
**The row must test the direction the NEW trigger opens, not a direction that
|
|
59
|
+
was already closed.** The withdrawn class is the worked example. Its first
|
|
60
|
+
near-miss row tested a protocol-less mention — silent *before* the change, and
|
|
61
|
+
therefore incapable of catching the over-broadness the change introduced. The
|
|
62
|
+
row that would have caught it is `near-builder-host-non-handover-url`, a
|
|
63
|
+
documentation URL on the same host, and it exists only because a review asked
|
|
64
|
+
for it after the trigger had already shipped.
|
|
65
|
+
|
|
66
|
+
Applied on the next trigger to land: `*.dc.html` (the Claude Design canvas
|
|
67
|
+
artboard, which `*design.html` cannot match because it compiles to
|
|
68
|
+
`^(?:.*design\.html)$`) shipped with `near-plain-html-open-file` and
|
|
69
|
+
`near-dc-in-a-filename` written **before** it, both testing the direction it
|
|
70
|
+
opens — an ordinary `.html` file in the tree, and a filename that merely
|
|
71
|
+
contains the letters. Both were confirmed red-then-green against the real
|
|
72
|
+
matcher rather than asserted.
|
|
73
|
+
|
|
74
|
+
## See also
|
|
75
|
+
|
|
76
|
+
- [`design-fidelity-mechanics`](design-fidelity-mechanics.md) — the porting half.
|
|
77
|
+
- `tests/scripts/design_fidelity_routing.test.ts` — `ROUTING_MATRIX`, which is
|
|
78
|
+
the measurement this file describes rather than a second copy of it.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Design Handover — URL / live-page extraction
|
|
2
|
+
|
|
3
|
+
> Where a URL handover gets extracted to, what consumes it, and in what order it is read back
|
|
4
|
+
|
|
5
|
+
_Split out of [`design-fidelity-mechanics`](design-fidelity-mechanics.md) § URL / live-page handover, which carries the obligation surface and routes here. The split is the per-file depth ceiling doing its job: the mechanics file sat at 14.2k of its 16k budget, and compressing this material to fit would have cost the parts that make it actionable._
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
A HANDOVER THAT ARRIVES AS A URL IS STILL RUNG 2, NOT RUNG 4.
|
|
9
|
+
EXTRACT THROUGH THE USER'S CONNECTED BROWSER TOOLS INTO FILES
|
|
10
|
+
BEFORE ANY UI WRITE. A SCREENSHOT TAKEN DURING EXTRACTION
|
|
11
|
+
CARRIES QA DUTY ONLY — IT IS NEVER THE THING YOU BUILD FROM.
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
When the artifact is handed over as a **URL** rather than a file — a published
|
|
15
|
+
artifact link, a builder's share link, a staging or `localhost` page — rung 2 of
|
|
16
|
+
the [data-basis ladder](design-fidelity-mechanics.md#data-basis-ladder) is
|
|
17
|
+
reachable and rung 4 is not the fallback it looks like. Pull the DOM,
|
|
18
|
+
stylesheets, scripts and assets through the browser tools the user has
|
|
19
|
+
connected, and land them as files first.
|
|
20
|
+
|
|
21
|
+
## Where the extraction lands
|
|
22
|
+
|
|
23
|
+
Into `design-system.json` under `.claude/design-system/` — the `path_prefix` the
|
|
24
|
+
`design-fidelity` rule already routes on. That file is an **existing contract**,
|
|
25
|
+
specified in
|
|
26
|
+
[`design-system-json.md`](../skills/design-system-capture/references/design-system-json.md);
|
|
27
|
+
this guideline defines no format of its own. Raw source files land beside it,
|
|
28
|
+
and screenshots taken while extracting land in a references directory next to
|
|
29
|
+
them.
|
|
30
|
+
|
|
31
|
+
## What consumes it
|
|
32
|
+
|
|
33
|
+
[`/design-system:import`](../../src/domains/engineering-base/design-system/import/command.md)
|
|
34
|
+
runs the extraction output through the three-lane adapter
|
|
35
|
+
(`native` / `dtcg` / `dembrandt`) into the contract shape, then hands it to
|
|
36
|
+
`design-system-capture`'s per-field import. The adapter is **offline** — it
|
|
37
|
+
reads a file and writes the contract shape; it never fetches, crawls, or
|
|
38
|
+
launches a browser.
|
|
39
|
+
|
|
40
|
+
## The lock boundary — stated here because this is where an agent would cross it
|
|
41
|
+
|
|
42
|
+
The package ships the contract, the adapter, and the instructions. It does
|
|
43
|
+
**not** ship the crawler, the Playwright runtime, or a font-bundler. Extraction
|
|
44
|
+
runs through the user's own connected tooling, and its output is *observed, not
|
|
45
|
+
authoritative*: every field is confirmed by the human, and a value conflicting
|
|
46
|
+
with a registered brand token is flagged rather than applied
|
|
47
|
+
(`brand-source-of-truth`).
|
|
48
|
+
|
|
49
|
+
## Retrieval order — so the source survives the session
|
|
50
|
+
|
|
51
|
+
Check in this order and stop at the first hit. The point is that the next
|
|
52
|
+
session reads a file instead of re-screenshotting the same page.
|
|
53
|
+
|
|
54
|
+
| # | Source | Why it ranks here |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| 1 | The project's own `design-system.json` | Already confirmed by a human in an earlier session — the only rung whose values someone signed off on |
|
|
57
|
+
| 2 | A previous extraction artifact under `.claude/design-system/` | Observed and file-backed; re-reading it costs nothing and re-extracting may drift |
|
|
58
|
+
| 3 | The live page | Authoritative for *today's* page, but only reachable while it is up and the tooling is connected |
|
|
59
|
+
|
|
60
|
+
**Persistence is not restated here.** Skip-if-exists unless explicitly forced,
|
|
61
|
+
and never silently discarding a prior confirmed decision, are owned by
|
|
62
|
+
[`/design-system:generate`](../../src/domains/engineering-base/design-system/generate/command.md)
|
|
63
|
+
— *"never overwrite a confirmed `DESIGN.md`"*, *"Never persist silently."* This
|
|
64
|
+
guideline states the order; that command states what happens on a collision, and
|
|
65
|
+
stating it twice is how the two drift apart.
|
|
66
|
+
|
|
67
|
+
## The producer sentence
|
|
68
|
+
|
|
69
|
+
The documented easy path is a connected extractor MCP, attached once and reused.
|
|
70
|
+
Where none is available, the manual Chrome-DevTools-MCP channel is the fallback,
|
|
71
|
+
and where neither is reachable the handover degrades to rung 3 or 4 — which the
|
|
72
|
+
ladder requires you to **name**, not to pass off as a source-based build.
|
|
73
|
+
|
|
74
|
+
## Coverage — stated honestly
|
|
75
|
+
|
|
76
|
+
No fixture scores this class yet. `daf-source-over-screenshot` scores the rung
|
|
77
|
+
choice on an *attached* artifact, not a URL handover.
|
|
78
|
+
|
|
79
|
+
**Its blocking reason changed on 2026-08-23 and the new one is narrower.** It was
|
|
80
|
+
SKIPPED since 2026-08-13 "for want of a page-reaching capture primitive". That
|
|
81
|
+
primitive now exists — `agent-config ui:render`, a Class-A headless capture at
|
|
82
|
+
desktop / 375 px / 320 px, executed against a real fixture. So the fixture is no
|
|
83
|
+
longer blocked on a missing capability; it is **unscored**, pending a live eval
|
|
84
|
+
run that puts an agent through an artifact port and judges the rung it chose.
|
|
85
|
+
|
|
86
|
+
The discipline is unchanged and still binds: claiming a regression witness before
|
|
87
|
+
that run would be the fabrication this package's evidence discipline exists to
|
|
88
|
+
prevent. What moved is which sentence is true — "we cannot measure this" became
|
|
89
|
+
"we have not measured this yet", and those are different claims.
|
|
90
|
+
|
|
91
|
+
### The skip register — every fixture gated on the same primitive
|
|
92
|
+
|
|
93
|
+
`daf-source-over-screenshot` is no longer the only one, so the reason string is
|
|
94
|
+
recorded once here rather than restated per fixture. Every row below is
|
|
95
|
+
**SKIPPED** with `b-page-capture-primitive` as its reason, and none is silently
|
|
96
|
+
absent:
|
|
97
|
+
|
|
98
|
+
| Fixture | Registered | Reason |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| `daf-source-over-screenshot` | 2026-08-13 | `b-page-capture-primitive` |
|
|
101
|
+
| `daf-render-absent-scoped` | 2026-08-23 | `b-page-capture-primitive` — its render-dependent assertions only; the static-scope assertions run and pass |
|
|
102
|
+
| `daf-render-absent-control` | 2026-08-23 | `b-page-capture-primitive` — synthesises `render_ok: true` as state rather than rendering, and says so |
|
|
103
|
+
|
|
104
|
+
**Probed, not assumed** (2026-08-23). The `playwright` library resolves in this
|
|
105
|
+
tree, which reads as a capture primitive until you run it: launching chromium
|
|
106
|
+
fails with *"Executable doesn't exist at
|
|
107
|
+
…/chromium_headless_shell-1234/chrome-headless-shell"*. The library is present
|
|
108
|
+
and **no browser binary is installed**, so the primitive is
|
|
109
|
+
`not-available: headless-browser-binary`. Recorded as execution evidence because
|
|
110
|
+
"playwright is in node_modules" is exactly the inference that would have made a
|
|
111
|
+
fabricated witness look justified.
|
|
112
|
+
|
|
113
|
+
## See also
|
|
114
|
+
|
|
115
|
+
- [`design-fidelity-mechanics`](design-fidelity-mechanics.md) — the data-basis ladder this operationalises, and the adopt-the-code duty that governs what you do with the extracted source.
|
|
116
|
+
- [`design-fidelity`](../rules/design-fidelity.md) — the rule; a provided artifact is the spec.
|
|
117
|
+
- [`design-system-capture`](../skills/design-system-capture/SKILL.md) — the per-field import the adapter hands off to.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Design Modes — Brand vs Product
|
|
2
|
+
|
|
3
|
+
> Reference doc. Pull this when deciding which design skills to prioritize
|
|
4
|
+
> or when the brief is ambiguous about the design register.
|
|
5
|
+
|
|
6
|
+
## The two registers
|
|
7
|
+
|
|
8
|
+
Every design task operates in one of two registers. Getting the register
|
|
9
|
+
wrong is the root cause of most AI-generated design failures:
|
|
10
|
+
|
|
11
|
+
| | Brand mode | Product mode |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| **Core thesis** | The impression IS the product | Design serves the task |
|
|
14
|
+
| **Primary failure** | Flatness / genericness — looks like every other AI startup | Strangeness without purpose — "clever" choices that obscure the tool |
|
|
15
|
+
| **The user's question** | "How was this made?" (genuine curiosity) | "Where do I click?" (the tool disappears into the task) |
|
|
16
|
+
| **Key skill cluster** | `brand-identity`, `iconography`, `fe-design § Aesthetic direction`, `design-intelligence` | `accessibility-auditor`, `ui-component-architect`, `fe-design § Table/Form Design` |
|
|
17
|
+
| **Typography strategy** | Distinctive pairing — two contrasting families, deliberate tracking | One reliable family — predictable hierarchy. A default AI font pick (Inter, Roboto, DM Sans, Geist, Space Grotesk, Instrument Serif) is a legitimate product-register choice, and [`design-antipatterns` T7](design-antipatterns.md) scopes itself accordingly — but the register is the reason, so state it: an undeclared Inter is still an undeclared font choice. |
|
|
18
|
+
| **Color strategy** | Brand identity — often unexpected; the palette IS the differentiator | Semantic function — primary/danger/success/neutral; predictable meaning |
|
|
19
|
+
| **Motion strategy** | Expressive — motion reinforces the brand's personality | Utilitarian — motion confirms state changes; nothing decorative |
|
|
20
|
+
| **Spacing strategy** | Breathing room; generous whitespace as a brand signal | Dense/efficient; optimize for information density |
|
|
21
|
+
| **Success criterion** | Originality test: a skeptic can't guess "which AI made this?" | Earned familiarity: the tool disappears; users focus on their task |
|
|
22
|
+
|
|
23
|
+
## How to determine the register
|
|
24
|
+
|
|
25
|
+
Ask: **What is the output of this UI being used for?**
|
|
26
|
+
|
|
27
|
+
- A consumer-facing surface where the FIRST impression determines whether the
|
|
28
|
+
user trusts/buys → **Brand mode**. The product has 3 seconds; every pixel
|
|
29
|
+
contributes to the brand's identity.
|
|
30
|
+
|
|
31
|
+
- An internal tool, dashboard, admin panel, or workflow-critical surface where
|
|
32
|
+
users return dozens of times per day → **Product mode**. Strangeness wastes
|
|
33
|
+
their time; predictability builds trust.
|
|
34
|
+
|
|
35
|
+
- A marketing landing page → **Brand mode**. It has one job: create desire.
|
|
36
|
+
|
|
37
|
+
- A data entry form → **Product mode**. It has one job: accept correct data.
|
|
38
|
+
|
|
39
|
+
**Ambiguous cases:** many products have both (a brand-heavy landing page +
|
|
40
|
+
a product-mode dashboard). The register applies per-surface, not per-product.
|
|
41
|
+
When unclear: ask — *"Is the user here to be impressed, or to accomplish a
|
|
42
|
+
task?"*
|
|
43
|
+
|
|
44
|
+
## The second axis — surface job
|
|
45
|
+
|
|
46
|
+
The register answers *how expressive may this be*. It does not answer *what is
|
|
47
|
+
this surface for*, and conflating the two is why a persuade surface inside a
|
|
48
|
+
product repo gets dense, utilitarian defaults. So there are two axes, and they
|
|
49
|
+
are independent.
|
|
50
|
+
|
|
51
|
+
| Surface job | The user's situation | Density | Hierarchy | Expressiveness |
|
|
52
|
+
|---|---|---|---|---|
|
|
53
|
+
| `persuade` | arrived, deciding, will leave in seconds | generous | one dominant claim per viewport | high — this is the job |
|
|
54
|
+
| `operate` | returning, task in mind, wants it done | dense | scannable, predictable, repeated | low — strangeness costs time |
|
|
55
|
+
| `read` | sustained attention on prose or data | measured | typographic, not chrome-led | restrained |
|
|
56
|
+
| `experience` | exploring, no task, willing to be surprised | spacious | narrative, sequential | high, and sequenced |
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
SURFACE JOB IS PER-SURFACE AND LIVES IN THE SURFACE BRIEF.
|
|
60
|
+
IT IS NEVER READ OFF PRODUCT.md, AND A RUN NEVER WRITES IT THERE.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Why not in PRODUCT.md.** PRODUCT.md describes the product, and a product has
|
|
64
|
+
many surfaces with different jobs — an investor one-pager and an ops console
|
|
65
|
+
belong to the same product and share no defaults. A run that resolves the job
|
|
66
|
+
from PRODUCT.md flattens the persuade surface into the product register, which
|
|
67
|
+
is the `surface-mode-not-product-mode` near-miss in
|
|
68
|
+
`tests/eval/frontend-corpus/near-miss/`.
|
|
69
|
+
|
|
70
|
+
**Register stays.** The two axes compose: a `persuade` surface in the `brand`
|
|
71
|
+
register and a `persuade` surface in the `product` register are both persuade
|
|
72
|
+
surfaces, and the register decides how far the expressiveness may go.
|
|
73
|
+
|
|
74
|
+
**Quality floors do not vary by either axis.** Density, hierarchy and
|
|
75
|
+
expressiveness defaults move; contrast, minimum font size, line length,
|
|
76
|
+
reduced-motion, heading order and focus visibility do not. A floor that moved
|
|
77
|
+
with the surface job would be a preference wearing a floor's name.
|
|
78
|
+
|
|
79
|
+
The machine-readable form is `surface_mode` in
|
|
80
|
+
[`ui-authority`](../contracts/ui-authority.md), which is also the one place the
|
|
81
|
+
precedence between an explicit instruction, the brief and these defaults is
|
|
82
|
+
written down.
|
|
83
|
+
|
|
84
|
+
## Brand-mode failure modes
|
|
85
|
+
|
|
86
|
+
- **Genericness:** Choosing the safe AI-slop palette (cream + brass, purple/violet gradient, three equal cards). The product is invisible in its category. Cross-check with `docs/guidelines/design-antipatterns.md` § Color and Visual.
|
|
87
|
+
- **Inconsistency:** Brand direction picked for the hero, abandoned for the body. The page reads as two different products.
|
|
88
|
+
- **Aesthetics-without-function:** Beautiful but confusing navigation, stunning hero with no CTA clarity.
|
|
89
|
+
|
|
90
|
+
## Product-mode failure modes
|
|
91
|
+
|
|
92
|
+
- **Strangeness-without-purpose:** A clever typographic choice that makes the CTA harder to scan. A gradient background on a data table. An animated page transition in an admin panel.
|
|
93
|
+
- **Premature originality:** Reinventing a standard UI pattern (data table, form validation, dropdown) when the standard is what users expect.
|
|
94
|
+
- **Over-engineering:** Five different card elevations in a dashboard that needs two.
|
|
95
|
+
|
|
96
|
+
## The AI-slop originality self-test (applies to brand mode primarily)
|
|
97
|
+
|
|
98
|
+
Run BOTH tiers before approving a brand-mode design direction:
|
|
99
|
+
|
|
100
|
+
**Tier 1 — Category test:**
|
|
101
|
+
Would a designer seeing 20 AI-generated [product category] UIs recognize this
|
|
102
|
+
aesthetic as part of that category's default? (e.g., "SaaS → dark mode + purple
|
|
103
|
+
gradient"; "health app → teal + rounded sans serif + white space").
|
|
104
|
+
- If YES: rework the concept. The design is invisible in its category.
|
|
105
|
+
- If NO: proceed to Tier 2.
|
|
106
|
+
|
|
107
|
+
**Tier 2 — Anti-reference test:**
|
|
108
|
+
Given the category AND three explicit aesthetics you've avoided — could a
|
|
109
|
+
skeptic still guess the direction? (e.g., "fintech that's not navy-and-gold,
|
|
110
|
+
not minimal white, not brutalist → everyone picks terminal dark").
|
|
111
|
+
- If YES: dig deeper. "Avoiding the worst cliché" is not differentiation.
|
|
112
|
+
- If NO: the direction is genuinely distinctive.
|
|
113
|
+
|
|
114
|
+
**The bar:** a visitor should ask "how was this made?" not "which AI made this?"
|
|
115
|
+
|
|
116
|
+
## Routing to skills by mode
|
|
117
|
+
|
|
118
|
+
**Brand mode brief:**
|
|
119
|
+
1. `design-intelligence` (grounded style/palette/typography selection — run the corpus first)
|
|
120
|
+
2. `brand-identity` (archetype → token system)
|
|
121
|
+
3. `iconography` (icon system selection for brand expression)
|
|
122
|
+
4. `fe-design § Aesthetic direction` (direction → composition → typography → color)
|
|
123
|
+
|
|
124
|
+
**Product mode brief:**
|
|
125
|
+
1. `existing-ui-audit` (mandatory — inventory first)
|
|
126
|
+
2. `accessibility-auditor` (WCAG compliance from the start)
|
|
127
|
+
3. `ui-component-architect` (reuse existing primitives)
|
|
128
|
+
4. `fe-design § Component Architecture, Form Design, Table Design` (standard patterns)
|
|
129
|
+
|
|
130
|
+
**Both modes:** `design-antipatterns` (always pull), `design-review` (with anti-slop check)
|
|
131
|
+
|
|
132
|
+
**Exploration front-ends (either mode, before committing):**
|
|
133
|
+
`wireframe` (lo-fi structure exploration, disposable greyscale) →
|
|
134
|
+
`design-variations` (3+ substantive hi-fi options, basic→bold, single file
|
|
135
|
+
with tweak controls). Decks are their own medium → `html-deck`
|
|
136
|
+
(fixed-canvas slides), not the responsive-UI routing above.
|
|
137
|
+
|
|
138
|
+
## See also
|
|
139
|
+
|
|
140
|
+
- `docs/guidelines/design-antipatterns.md` — the slop-tell catalog; brand mode especially needs this
|
|
141
|
+
- `brand-source-of-truth` — when a registered brand profile is present, it governs
|
|
142
|
+
- `brand-consistency` — validates emitted artifacts against the brand profile
|
|
143
|
+
- `design-system-capture` — DESIGN.md/PRODUCT.md capture the mode's decisions for cross-task consistency
|