@event4u/agent-config 16.5.0 → 17.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 +2 -2
- package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
- package/CHANGELOG.md +463 -498
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
- package/dist/agent-src/commands/agents/init.md +66 -3
- package/dist/agent-src/commands/agents/user/init.md +3 -0
- package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
- package/dist/agent-src/commands/analyze/inbox.md +168 -37
- package/dist/agent-src/commands/analyze/pr.md +144 -0
- package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
- package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
- package/dist/agent-src/commands/analyze.md +28 -12
- package/dist/agent-src/commands/audit.md +115 -0
- package/dist/agent-src/commands/brand/review.md +13 -2
- package/dist/agent-src/commands/brand/tokens.md +3 -3
- package/dist/agent-src/commands/brand/voice.md +8 -5
- package/dist/agent-src/commands/brand.md +2 -2
- package/dist/agent-src/commands/challenge-me/closure.md +25 -0
- package/dist/agent-src/commands/design-system/import.md +8 -3
- package/dist/agent-src/commands/design-system/sync.md +98 -0
- package/dist/agent-src/commands/design-system.md +6 -1
- package/dist/agent-src/commands/evals/analyze.json +44 -0
- package/dist/agent-src/commands/evals/audit.json +12 -0
- package/dist/agent-src/commands/evals/retro.json +12 -0
- package/dist/agent-src/commands/fix/ci.md +10 -8
- package/dist/agent-src/commands/ghostwriter/write.md +22 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
- package/dist/agent-src/commands/memory/propose.md +12 -0
- package/dist/agent-src/commands/memory.md +1 -1
- package/dist/agent-src/commands/optimize.md +4 -3
- package/dist/agent-src/commands/post-as/me.md +18 -0
- package/dist/agent-src/commands/pr/create.md +17 -342
- package/dist/agent-src/commands/pr/merge.md +129 -368
- package/dist/agent-src/commands/retro.md +121 -0
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +4 -1
- package/dist/agent-src/commands/roadmap/process-full.md +46 -333
- package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
- package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
- package/dist/agent-src/commands/team-knowledge.md +1 -1
- package/dist/agent-src/commands/threat-model.md +1 -1
- package/dist/agent-src/commands/upstream-contribute.md +91 -101
- package/dist/agent-src/commands/worktree/cleanup.md +18 -11
- package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
- package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
- package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
- package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
- package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
- package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
- package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
- package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
- package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
- package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
- package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
- package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
- package/dist/agent-src/contexts/model-recommendations.md +5 -5
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/dist/agent-src/guidelines/design-antipatterns.md +5 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
- package/dist/agent-src/guidelines/php/api-design.md +10 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +0 -1
- package/dist/agent-src/rules/design-fidelity.md +12 -13
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/fix-what-you-see.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
- package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
- package/dist/agent-src/rules/neighbour-precedence.md +1 -1
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +2 -2
- package/dist/agent-src/rules/token-budget-discipline.md +1 -1
- package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
- package/dist/agent-src/scripts/roadmap_age.ts +175 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
- package/dist/agent-src/skills/agent-security-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
- package/dist/agent-src/skills/api-design/SKILL.md +2 -2
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
- package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/brand/SKILL.md +7 -3
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
- package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
- package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
- package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
- package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
- package/dist/agent-src/skills/canvas-design/SKILL.md +12 -2
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
- package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
- package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
- package/dist/agent-src/skills/database/SKILL.md +5 -4
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
- package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
- package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +14 -14
- package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
- package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
- package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
- package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
- package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
- package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +16 -2
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
- package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
- package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
- package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
- package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +9 -3
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
- package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
- package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
- package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
- 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 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
- package/dist/agent-src/skills/security/SKILL.md +41 -5
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
- package/dist/agent-src/skills/svg-authoring/SKILL.md +7 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
- package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
- package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
- package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
- package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
- package/dist/agent-src/skills/type-design/SKILL.md +196 -0
- package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
- package/dist/agent-src/skills/type-design/references/gates.md +113 -0
- package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
- package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
- package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +1 -1
- package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
- package/dist/agent-src/templates/roadmaps.md +39 -1
- package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/dist/cli/commands/uiRender.js +72 -17
- package/dist/cli/commands/uiRenderAsset.js +10 -2
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/mcp/dispatch.js +31 -9
- package/dist/cli/python/knowledge_ingest.js +7 -39
- package/dist/cli/python/workspace_secrets.js +4 -177
- package/dist/cli/registry.js +4 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
- package/dist/cli-delegate/check_update_banner.js +635 -266
- package/dist/cli-delegate/{chunk-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -437
- package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
- package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
- package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
- package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
- package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
- package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
- package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
- package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
- package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
- package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
- package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
- package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
- package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
- package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
- package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
- package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
- package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
- package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
- package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
- package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
- package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
- package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
- package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
- package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
- package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
- package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
- package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/cmd_adr_effective.js +41 -2
- package/dist/cli-delegate/cmd_analyze_session.js +7 -7
- package/dist/cli-delegate/cmd_brand_status.js +1287 -10
- package/dist/cli-delegate/cmd_ci_settle.js +330 -0
- package/dist/cli-delegate/cmd_conformance.js +483 -817
- package/dist/cli-delegate/cmd_doctor.js +26 -16
- package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
- package/dist/cli-delegate/cmd_explain.js +9 -24
- package/dist/cli-delegate/cmd_export.js +14 -11
- package/dist/cli-delegate/cmd_fleet.js +5 -3
- package/dist/cli-delegate/cmd_git_convention.js +8 -4
- package/dist/cli-delegate/cmd_handoff.js +79 -242
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +4 -2
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_preflight.js +7 -5
- package/dist/cli-delegate/cmd_prune.js +16 -13
- package/dist/cli-delegate/cmd_route_audit.js +11 -8
- package/dist/cli-delegate/cmd_route_explain.js +649 -16
- package/dist/cli-delegate/cmd_session_recycle.js +15 -6
- package/dist/cli-delegate/cmd_settings_check.js +2 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +16 -13
- package/dist/cli-delegate/cmd_uninstall.js +185 -31
- package/dist/cli-delegate/cmd_update.js +67 -3
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +16 -13
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/dashboard_mode.js +1 -1
- package/dist/cli-delegate/gate_execute.js +4 -3
- package/dist/cli-delegate/roadmap_age.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +4 -3
- package/dist/cli-delegate/update_roadmap_progress.js +3 -2
- package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +373 -190
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +21 -16
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17506 -18692
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/egress_engine.chunk.cjs +915 -0
- package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
- package/dist/hooks/svg_rules.chunk.cjs +281 -49
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
- package/dist/install/conflict.js +36 -6
- package/dist/install/conflictTracker.js +81 -7
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3117 -1949
- package/dist/install/installThinLayer.js +1 -1
- package/dist/install/manifestFiles.js +21 -0
- package/dist/install/noGoDenyRows.js +300 -0
- package/dist/install/noGoRules.js +368 -0
- package/dist/install/ownershipLedger.js +133 -0
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +74 -12
- package/dist/install/recordedOwnership.js +88 -5
- package/dist/install/rule_scope.js +20 -3
- package/dist/install/stagedRuntime.js +455 -0
- package/dist/install/toolsArg.js +19 -0
- package/dist/install/userPin.js +47 -0
- package/dist/install/wizard-plan.js +26 -4
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
- package/dist/mcp/registry-manifest.json +6 -5
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +9831 -5546
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +7 -12
- package/dist/scripts/_lib/asset_render_record.js +219 -0
- package/dist/scripts/_lib/claude_builtin_names.js +9 -4
- package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
- package/dist/scripts/_lib/egress_rules.js +766 -0
- package/dist/scripts/_lib/environment_detector.js +24 -33
- package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
- package/dist/scripts/_lib/guidelines_lane.js +10 -1
- package/dist/scripts/_lib/identifier_redaction.js +24 -0
- package/dist/scripts/_lib/installed_layer.js +17 -0
- package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
- package/dist/scripts/_lib/lean_projection_mode.js +34 -152
- package/dist/scripts/_lib/project_tree_form.js +118 -0
- package/dist/scripts/_lib/scoped_projection.js +133 -3
- package/dist/scripts/_lib/settings_removed_keys.js +29 -0
- package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
- package/dist/scripts/_lib/subagent_native_fields.js +35 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_rules.js +2 -0
- package/dist/scripts/_lib/ui_surface.js +19 -0
- package/dist/scripts/_lib/verification_command.js +364 -0
- package/dist/scripts/_lib/workspace_secrets.js +229 -0
- package/dist/scripts/ai_council/seat_policy.js +27 -0
- package/dist/scripts/ai_council/transport_resolver.js +9 -10
- package/dist/scripts/condense.js +25 -29
- package/dist/server/io/substituteTemplate.js +2 -2
- package/dist/server/io/yamlIO.js +2 -2
- package/dist/server/routes/install.js +5 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/wizard.js +1 -1
- package/dist/server/schemas/settings.js +22 -16
- package/dist/server/serverInfo.js +1 -1
- package/dist/shared/brandTokenDocument.js +47 -0
- package/dist/shared/brandTokenPaths.js +43 -0
- package/dist/shared/settingsCarveOut.js +0 -7
- package/dist/shared/skillRanking.js +103 -5
- package/dist/shared/userMd/formAdapter.js +16 -0
- package/dist/shared/userMd/schema.js +17 -0
- package/dist/ui/assets/index-w70Ado09.js +23 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +89 -2
- package/docs/THIRD-PARTY-NOTICES.md +27 -0
- package/docs/contracts/settings-classes.md +27 -9
- package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/docs/guidelines/design-antipatterns.md +5 -0
- package/docs/guidelines/design-asset-discipline.md +17 -0
- package/docs/guidelines/design-fidelity-routing.md +1 -0
- package/docs/guidelines/php/api-design.md +10 -1
- package/llms.txt +12 -10
- package/package.json +13 -4
- package/src/agent-src/scripts/dashboard_mode.ts +4 -1
- package/src/agent-src/scripts/roadmap_age.ts +175 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/check_memory.ts +2 -2
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/src/config/agent-settings.template.yml +120 -57
- package/src/config/agents-paths.yml +13 -7
- package/src/config/ci-local-parity.yml +44 -0
- package/src/config/continuity-surface.json +51 -2
- package/src/config/depth-audit-samples.json +5 -0
- package/src/config/discovery/command-verbs.yml +1 -0
- package/src/config/dispatch-economy-metrics.json +1 -0
- package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
- package/src/config/egress-mutations/credential-token-restores.json +7 -0
- package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
- package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +149 -3
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +26 -22
- package/src/config/gitignore-block.txt +6 -3
- package/src/config/hook-bundle-budget.json +34 -3
- package/src/config/hook-carrier-probes.json +30 -0
- package/src/config/hook-latency-budget.json +4 -2
- package/src/config/host-injection-effect.json +8 -1
- package/src/config/host-skill-frontmatter-keys.json +56 -0
- package/src/config/layer-form-brakes.json +4 -0
- package/src/config/layer-form-comparison-corpus.json +42 -0
- package/src/config/loop-surfaces.yaml +28 -47
- package/src/config/memory-twin-verdicts.yml +9 -1
- package/src/config/metric-registry.yml +40 -3
- package/src/config/pack-size-budget.json +15 -0
- package/src/config/procedure-core-budget.json +21 -0
- package/src/config/profiles/minimal.ini +1 -1
- package/src/config/project-tree-form.json +24 -0
- package/src/config/reach-channels.yml +3 -3
- package/src/config/reach-prescriptions-intake.yml +1 -1
- package/src/config/roadmap-step-size-baseline.json +118 -0
- package/src/config/routing-coverage-seed.json +93 -2
- package/src/config/skill-body-budget.json +686 -0
- package/src/config/skill-fork-pilot.json +17 -0
- package/src/config/skill-lifecycle-probes-codex.json +57 -0
- package/src/config/skill-lifecycle-probes.json +57 -0
- package/src/config/skill-output-shape.json +316 -0
- package/src/config/step-depth-table.json +58 -0
- package/src/config/turnaround-budget.json +90 -0
- package/src/install/conflict.ts +38 -6
- package/src/install/conflictTracker.ts +126 -8
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +6 -1
- package/src/install/manifestFiles.ts +24 -0
- package/src/install/noGoDenyRows.ts +368 -0
- package/src/install/noGoRules.ts +438 -0
- package/src/install/ownershipLedger.ts +180 -0
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +94 -12
- package/src/install/recordedOwnership.ts +121 -3
- package/src/install/rule_scope.ts +20 -3
- package/src/install/stagedRuntime.ts +528 -0
- package/src/install/toolsArg.ts +16 -0
- package/src/install/types.ts +23 -2
- package/src/install/userPin.ts +54 -0
- package/src/install/wizard-plan.ts +25 -4
- package/src/scripts/_cli/_doctor_emit.ts +24 -0
- package/src/scripts/_cli/cmd_brand_status.ts +223 -12
- package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -44
- package/src/scripts/_cli/cmd_route_explain.ts +176 -2
- package/src/scripts/_cli/cmd_uninstall.ts +270 -26
- package/src/scripts/_cli/cmd_update.ts +34 -1
- package/src/scripts/_cli/cmd_upgrade.ts +38 -2
- package/src/scripts/_cli/detection_report.ts +7 -0
- package/src/scripts/_cli/doctor_execution.ts +1 -2
- package/src/scripts/_cli/doctor_install_mode.ts +39 -0
- package/src/scripts/_cli/doctor_network_posture.ts +3 -3
- package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
- package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
- package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
- package/src/scripts/_cli/upgrade_unattended.ts +548 -0
- package/src/scripts/_dispatch.bash +42 -9
- package/src/scripts/_lib/activation_ladder.ts +1 -1
- package/src/scripts/_lib/advisory_inventory.ts +405 -0
- package/src/scripts/_lib/advisory_notice.ts +270 -0
- package/src/scripts/_lib/advisory_sources.ts +752 -0
- package/src/scripts/_lib/advisory_verdicts.ts +363 -0
- package/src/scripts/_lib/agent_artifact_location.ts +177 -0
- package/src/scripts/_lib/agent_settings.ts +7 -12
- package/src/scripts/_lib/arrival_record.ts +217 -0
- package/src/scripts/_lib/asset_render_record.ts +247 -0
- package/src/scripts/_lib/billing_grant.ts +4 -2
- package/src/scripts/_lib/brand_voice_slot.ts +258 -0
- package/src/scripts/_lib/canary_status.ts +24 -0
- package/src/scripts/_lib/cc_transcript.ts +276 -0
- package/src/scripts/_lib/changelog_eras.ts +83 -0
- package/src/scripts/_lib/claim_phrases.ts +71 -0
- package/src/scripts/_lib/classify_update.ts +171 -0
- package/src/scripts/_lib/claude_builtin_names.ts +9 -4
- package/src/scripts/_lib/claude_hook_scope.ts +195 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
- package/src/scripts/_lib/codex_resident_set.ts +460 -0
- package/src/scripts/_lib/codex_skill_finder.ts +225 -0
- package/src/scripts/_lib/confusables.ts +19 -0
- package/src/scripts/_lib/consumer_impact.ts +199 -0
- package/src/scripts/_lib/content_class.ts +127 -0
- package/src/scripts/_lib/counted_probe.ts +68 -1
- package/src/scripts/_lib/credential_deny_rows.ts +151 -0
- package/src/scripts/_lib/credential_files.ts +367 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
- package/src/scripts/_lib/depth_flip.ts +141 -0
- package/src/scripts/_lib/design_lock.ts +117 -0
- package/src/scripts/_lib/design_sync_ledger.ts +142 -0
- package/src/scripts/_lib/design_sync_plan.ts +177 -0
- package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
- package/src/scripts/_lib/design_sync_verify.ts +99 -0
- package/src/scripts/_lib/design_system_claude_design.ts +323 -0
- package/src/scripts/_lib/design_system_import.ts +84 -6
- package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
- package/src/scripts/_lib/egress_credential_env.ts +35 -0
- package/src/scripts/_lib/egress_engine.ts +22 -0
- package/src/scripts/_lib/egress_known_values.ts +223 -0
- package/src/scripts/_lib/egress_normalize.ts +67 -0
- package/src/scripts/_lib/egress_prefixes.ts +42 -0
- package/src/scripts/_lib/egress_rules.ts +896 -0
- package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
- package/src/scripts/_lib/egress_sender_scan.ts +290 -0
- package/src/scripts/_lib/egress_session_table.ts +510 -0
- package/src/scripts/_lib/egress_text.ts +63 -0
- package/src/scripts/_lib/egress_token.ts +252 -0
- package/src/scripts/_lib/empty_cycles.ts +1 -1
- package/src/scripts/_lib/environment_detector.ts +45 -30
- package/src/scripts/_lib/exemption_shape.ts +75 -1
- package/src/scripts/_lib/floor_posture.ts +185 -0
- package/src/scripts/_lib/forge_protection.ts +140 -2
- package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
- package/src/scripts/_lib/guidelines_lane.ts +12 -1
- package/src/scripts/_lib/hand_kinds.ts +65 -0
- package/src/scripts/_lib/headless_invocation.ts +3 -3
- package/src/scripts/_lib/host_capability.ts +34 -2
- package/src/scripts/_lib/host_env_write.ts +39 -18
- package/src/scripts/_lib/host_listing_model.ts +14 -7
- package/src/scripts/_lib/identifier_redaction.ts +26 -0
- package/src/scripts/_lib/impact_bump.ts +70 -0
- package/src/scripts/_lib/install_reach_checks.ts +53 -1
- package/src/scripts/_lib/installed_layer.ts +31 -0
- package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/layer_form_corpus.ts +165 -0
- package/src/scripts/_lib/layer_form_decision.ts +248 -0
- package/src/scripts/_lib/layer_form_evidence.ts +112 -0
- package/src/scripts/_lib/lean_projection_mode.ts +32 -161
- package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
- package/src/scripts/_lib/loop_guards.ts +8 -120
- package/src/scripts/_lib/major_surface.ts +207 -0
- package/src/scripts/_lib/mcp_bridge.ts +30 -69
- package/src/scripts/_lib/merge_clearance_record.ts +384 -0
- package/src/scripts/_lib/neighbour_census.ts +18 -1
- package/src/scripts/_lib/orchestration_record.ts +61 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
- package/src/scripts/_lib/pin_advice.ts +49 -0
- package/src/scripts/_lib/platform_anchor.ts +222 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/project_tree_form.ts +134 -0
- package/src/scripts/_lib/projection_key_migration.ts +122 -0
- package/src/scripts/_lib/prompt_shape.ts +13 -2
- package/src/scripts/_lib/provenance_verify.ts +272 -0
- package/src/scripts/_lib/quota_parked.ts +27 -1
- package/src/scripts/_lib/ratification_artifact.ts +64 -1
- package/src/scripts/_lib/ratification_subject.ts +508 -46
- package/src/scripts/_lib/release_findings_ingest.ts +52 -5
- package/src/scripts/_lib/release_highlights.ts +72 -2
- package/src/scripts/_lib/release_settings_surface.ts +392 -0
- package/src/scripts/_lib/review_round.ts +134 -0
- package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
- package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
- package/src/scripts/_lib/roadmap_step_size.ts +75 -0
- package/src/scripts/_lib/run_checkpoint.ts +60 -3
- package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
- package/src/scripts/_lib/scope_guard.sh +64 -5
- package/src/scripts/_lib/scoped_projection.ts +136 -3
- package/src/scripts/_lib/secret_detector.ts +24 -103
- package/src/scripts/_lib/security_fix.ts +429 -0
- package/src/scripts/_lib/security_fix_context.ts +133 -0
- package/src/scripts/_lib/self_repair.ts +69 -39
- package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
- package/src/scripts/_lib/self_repair_payload.ts +86 -0
- package/src/scripts/_lib/session_eol.ts +3 -0
- package/src/scripts/_lib/session_pr_watch.ts +207 -0
- package/src/scripts/_lib/session_register.ts +51 -1
- package/src/scripts/_lib/session_tag.ts +51 -0
- package/src/scripts/_lib/settings_removed_keys.ts +30 -0
- package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
- package/src/scripts/_lib/skill_catalogue.ts +66 -25
- package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
- package/src/scripts/_lib/skill_leases.ts +203 -0
- package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
- package/src/scripts/_lib/skill_materialisation.ts +388 -0
- package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
- package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
- package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
- package/src/scripts/_lib/skill_origin.ts +21 -1
- package/src/scripts/_lib/skill_reach.ts +342 -0
- package/src/scripts/_lib/source_shape.ts +7 -2
- package/src/scripts/_lib/sqlite_guard.ts +1 -1
- package/src/scripts/_lib/step_anatomy.ts +330 -0
- package/src/scripts/_lib/subagent_capsule.ts +8 -2
- package/src/scripts/_lib/subagent_native_fields.ts +30 -0
- package/src/scripts/_lib/subagent_spawn.ts +36 -0
- package/src/scripts/_lib/subagent_steering.ts +367 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_rules.ts +2 -0
- package/src/scripts/_lib/test_delta.ts +89 -6
- package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
- package/src/scripts/_lib/tool_result_census.ts +62 -0
- package/src/scripts/_lib/trigger_routers.ts +1 -0
- package/src/scripts/_lib/turnaround_throughput.ts +378 -0
- package/src/scripts/_lib/ui_surface.ts +22 -0
- package/src/scripts/_lib/unattended_gates.ts +100 -0
- package/src/scripts/_lib/undeployed_fixes.ts +34 -0
- package/src/scripts/_lib/update_check.ts +143 -12
- package/src/scripts/_lib/update_invite.ts +116 -0
- package/src/scripts/_lib/update_notice.ts +259 -0
- package/src/scripts/_lib/verify_clause.ts +4 -2
- package/src/scripts/_lib/version_order.ts +146 -0
- package/src/scripts/_lib/worker_reuse.ts +191 -0
- package/src/scripts/_lib/workspace_secrets.ts +273 -0
- package/src/scripts/_lib/worktree_git.ts +67 -0
- package/src/scripts/_lib/worktree_ignored.ts +116 -0
- package/src/scripts/adoption_status.ts +330 -3
- package/src/scripts/adr_cite_check.ts +93 -0
- package/src/scripts/advisories.ts +803 -0
- package/src/scripts/ai-image/adapters/flux.sh +1 -0
- package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
- package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
- package/src/scripts/ai-image/adapters/recraft.sh +1 -0
- package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
- package/src/scripts/ai-video/adapters/fal.sh +1 -0
- package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
- package/src/scripts/ai-video/adapters/kling.sh +1 -0
- package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
- package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
- package/src/scripts/ai-video/adapters/replicate.sh +1 -0
- package/src/scripts/ai-video/adapters/sora.sh +1 -0
- package/src/scripts/ai-video/adapters/syncso.sh +1 -0
- package/src/scripts/ai-video/stitch.sh +115 -2
- package/src/scripts/ai_council/airgap.ts +1 -0
- package/src/scripts/ai_council/api_transport.ts +27 -4
- package/src/scripts/ai_council/budget_guard.ts +300 -11
- package/src/scripts/ai_council/bundler.ts +20 -29
- package/src/scripts/ai_council/chairman.ts +17 -2
- package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
- package/src/scripts/ai_council/cli_launch_env.ts +54 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
- package/src/scripts/ai_council/clients.ts +55 -73
- package/src/scripts/ai_council/config.ts +16 -22
- package/src/scripts/ai_council/council_egress.ts +167 -0
- package/src/scripts/ai_council/exposure_ledger.ts +117 -0
- package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +173 -0
- package/src/scripts/ai_council/free_route_client.ts +95 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +230 -0
- package/src/scripts/ai_council/hand_schemas.ts +123 -0
- package/src/scripts/ai_council/jury_aggregate.ts +155 -1
- package/src/scripts/ai_council/kind_flip.ts +221 -0
- package/src/scripts/ai_council/kind_flip_state.ts +19 -0
- package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
- package/src/scripts/ai_council/modification_review.ts +98 -5
- package/src/scripts/ai_council/necessity.ts +7 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -16
- package/src/scripts/ai_council/pricing.ts +10 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
- package/src/scripts/ai_council/response_render.ts +27 -4
- package/src/scripts/ai_council/round_reservations.ts +119 -0
- package/src/scripts/ai_council/route_chooser.ts +161 -0
- package/src/scripts/ai_council/route_liveness.ts +152 -0
- package/src/scripts/ai_council/route_member.ts +52 -0
- package/src/scripts/ai_council/seat_policy.ts +40 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
- package/src/scripts/ai_council/spend_gate.ts +18 -2
- package/src/scripts/ai_council/status_surface.ts +37 -0
- package/src/scripts/ai_council/transport_resolver.ts +15 -18
- package/src/scripts/analysis_analysts.ts +226 -0
- package/src/scripts/analysis_anchors.ts +140 -0
- package/src/scripts/analysis_and_optimize.ts +44 -0
- package/src/scripts/analysis_emit.ts +150 -0
- package/src/scripts/analysis_exchange.ts +186 -0
- package/src/scripts/analysis_gate.ts +158 -0
- package/src/scripts/analysis_inbox_final.ts +173 -0
- package/src/scripts/analysis_ledger.ts +119 -0
- package/src/scripts/analysis_pr_optimize.ts +219 -0
- package/src/scripts/analysis_pr_review.ts +240 -0
- package/src/scripts/analysis_pr_target.ts +121 -0
- package/src/scripts/analysis_prompts.ts +130 -0
- package/src/scripts/analysis_publish.ts +358 -0
- package/src/scripts/analysis_questions.ts +78 -0
- package/src/scripts/analysis_run.ts +248 -0
- package/src/scripts/analysis_run_record.ts +210 -0
- package/src/scripts/analysis_target.ts +343 -0
- package/src/scripts/analysis_validate.ts +161 -0
- package/src/scripts/anchor_eval_falsify.ts +1 -1
- package/src/scripts/arrival_report.ts +115 -0
- package/src/scripts/ask_transport.ts +284 -35
- package/src/scripts/backfill_model_tier.ts +4 -5
- package/src/scripts/before_complete_hook.ts +48 -2
- package/src/scripts/bench_hook_latency.ts +3 -3
- package/src/scripts/bench_procedure_cursor.ts +440 -0
- package/src/scripts/bootstrap.sh +3 -3
- package/src/scripts/build_exit_code_register.ts +440 -0
- package/src/scripts/build_proof.ts +23 -1
- package/src/scripts/cache_realization_report.ts +155 -14
- package/src/scripts/canary_liveness.ts +117 -0
- package/src/scripts/chat_history.ts +12 -15
- package/src/scripts/check_account_surface.ts +318 -0
- package/src/scripts/check_agent_artifact_location.ts +17 -160
- package/src/scripts/check_bundle_path_leakage.ts +6 -0
- package/src/scripts/check_ci_local_parity.ts +21 -13
- package/src/scripts/check_claims.ts +77 -2
- package/src/scripts/check_completion_review.ts +34 -1
- package/src/scripts/check_concern_admissions.ts +41 -5
- package/src/scripts/check_consumer_scope_flip.ts +1 -1
- package/src/scripts/check_context_paths.ts +2 -0
- package/src/scripts/check_council_layout.ts +9 -0
- package/src/scripts/check_credential_spelling.ts +267 -0
- package/src/scripts/check_egress_mutations.ts +239 -0
- package/src/scripts/check_enforcement_coverage.ts +16 -3
- package/src/scripts/check_estate_count.ts +16 -1
- package/src/scripts/check_finding_dispositions.ts +147 -0
- package/src/scripts/check_gate_coverage.ts +123 -21
- package/src/scripts/check_gate_reachability.ts +16 -2
- package/src/scripts/check_generator_sync.ts +46 -0
- package/src/scripts/check_hook_bundle_composition.ts +139 -1
- package/src/scripts/check_host_docs_digest.ts +142 -5
- package/src/scripts/check_kernel_edit_ratified.ts +301 -76
- package/src/scripts/check_kernel_rule_bundle.ts +14 -10
- package/src/scripts/check_knowledge_cards.ts +83 -3
- package/src/scripts/check_memory.ts +13 -3
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_permission_deny_syntax.ts +247 -0
- package/src/scripts/check_platform_anchor.ts +243 -0
- package/src/scripts/check_proposal.ts +183 -1
- package/src/scripts/check_reach_channels.ts +5 -3
- package/src/scripts/check_references.ts +5 -2
- package/src/scripts/check_release_manifest_content.ts +33 -0
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_rule_invariants.ts +9 -1
- package/src/scripts/check_skill_body_budget.ts +343 -0
- package/src/scripts/check_skill_requires.ts +137 -1
- package/src/scripts/check_step_receipts.ts +246 -0
- package/src/scripts/check_structural_breaking.ts +7 -1
- package/src/scripts/check_suppression_hygiene.ts +8 -0
- package/src/scripts/check_test_weakening.ts +14 -0
- package/src/scripts/check_token_quality_golden.ts +5 -1
- package/src/scripts/check_update_banner.ts +50 -3
- package/src/scripts/check_verify_expectation_delta.ts +2 -1
- package/src/scripts/check_voice_lexicon.ts +531 -0
- package/src/scripts/ci_os_attribution.ts +327 -0
- package/src/scripts/ci_platform_scope.ts +69 -0
- package/src/scripts/ci_settle.ts +4 -1
- package/src/scripts/ci_status.ts +0 -1
- package/src/scripts/ci_time_to_green.ts +748 -0
- package/src/scripts/classify_merge_risk.ts +407 -19
- package/src/scripts/code_graph/sqlite_store.ts +1 -1
- package/src/scripts/compile_trigger_evals.ts +353 -0
- package/src/scripts/condense.ts +25 -31
- package/src/scripts/consumer_matrix.ts +61 -3
- package/src/scripts/council_availability_hook.ts +12 -4
- package/src/scripts/council_cli.ts +48 -38
- package/src/scripts/cross_repo_retrieve.ts +9 -72
- package/src/scripts/design_lock.ts +106 -0
- package/src/scripts/design_slop_rules.ts +30 -0
- package/src/scripts/design_sync.ts +264 -0
- package/src/scripts/design_system_import.ts +30 -13
- package/src/scripts/dispatch_economy_report.ts +46 -1
- package/src/scripts/dispatch_r2_reviewer.ts +41 -5
- package/src/scripts/egress_canary.ts +166 -0
- package/src/scripts/egress_sender_census.ts +101 -0
- package/src/scripts/external_sources_denylist.json +94 -12
- package/src/scripts/generate_catalog.ts +6 -2
- package/src/scripts/generate_owned_digest.ts +163 -0
- package/src/scripts/generate_reference_toc.ts +143 -0
- package/src/scripts/generate_subagent_floor.ts +11 -1
- package/src/scripts/handoff_context_hook.ts +34 -0
- package/src/scripts/hook_carrier_census.ts +263 -0
- package/src/scripts/hook_chunks.d.mts +12 -0
- package/src/scripts/hook_chunks.mjs +114 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +65 -42
- package/src/scripts/hooks/block_config_weakening.ts +127 -3
- package/src/scripts/hooks/block_credential_reads.ts +165 -0
- package/src/scripts/hooks/block_no_verify.ts +47 -23
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +38 -7
- package/src/scripts/hooks/category_a.ts +202 -25
- package/src/scripts/hooks/concern_failure_policy.ts +6 -6
- package/src/scripts/hooks/concern_registry.ts +31 -6
- package/src/scripts/hooks/concern_registry_types.ts +11 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
- package/src/scripts/hooks/design_pass_hook.ts +42 -10
- package/src/scripts/hooks/dispatch_hook.ts +13 -12
- package/src/scripts/hooks/egress_engine_loader.ts +125 -0
- package/src/scripts/hooks/egress_stage.ts +440 -0
- package/src/scripts/hooks/hook_stdin.ts +29 -4
- package/src/scripts/hooks/host_docs_pages.ts +194 -0
- package/src/scripts/hooks/host_docs_pages.yaml +75 -0
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.yaml +22 -21
- package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
- package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
- package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
- package/src/scripts/hooks/lazy_concern.ts +148 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
- package/src/scripts/hooks/payload_stub.ts +16 -6
- package/src/scripts/hooks/permission_gate.ts +7 -7
- package/src/scripts/hooks/push_settle_hook.ts +32 -3
- package/src/scripts/hooks/replay_hook.ts +43 -0
- package/src/scripts/hooks/reread_guard_hook.ts +87 -10
- package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +8 -1
- package/src/scripts/hooks/session_eol_hook.ts +48 -1
- package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/svg_obligation.ts +75 -19
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
- package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
- package/src/scripts/hooks_doctor.ts +31 -0
- package/src/scripts/hooks_status.ts +58 -3
- package/src/scripts/inbox_source_census.ts +74 -13
- package/src/scripts/install +25 -3
- package/src/scripts/install.ts +60 -91
- package/src/scripts/interruption_report.ts +11 -1
- package/src/scripts/layer_baseline_report.ts +267 -0
- package/src/scripts/learning_sidecar.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +3 -0
- package/src/scripts/lint_blocker_citations.ts +104 -0
- package/src/scripts/lint_breaking_changes_index.ts +40 -7
- package/src/scripts/lint_consolidation_lineage.ts +144 -16
- package/src/scripts/lint_consumer_internal_refs.ts +90 -42
- package/src/scripts/lint_context_spine_usage.ts +21 -0
- package/src/scripts/lint_design_antipattern_parity.ts +39 -7
- package/src/scripts/lint_evidence_artifacts.ts +31 -0
- package/src/scripts/lint_example_fences.ts +11 -2
- package/src/scripts/lint_ghostwriter_source.ts +42 -10
- package/src/scripts/lint_hook_manifest.ts +94 -0
- package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
- package/src/scripts/lint_mcp_config_security.ts +9 -11
- package/src/scripts/lint_plan_risk_register.ts +28 -1
- package/src/scripts/lint_positioning.ts +4 -4
- package/src/scripts/lint_provenance.ts +1 -0
- package/src/scripts/lint_roadmap_blockers.ts +65 -4
- package/src/scripts/lint_roadmap_complexity.ts +98 -0
- package/src/scripts/lint_skill_link_reach.ts +251 -9
- package/src/scripts/lint_skill_procedures.ts +252 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
- package/src/scripts/lint_subagent_determinism.ts +14 -1
- package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
- package/src/scripts/mcp_registry_submit.sh +2 -2
- package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
- package/src/scripts/mcp_server/suggest_skill.ts +89 -4
- package/src/scripts/mcp_server/tools.ts +2 -33
- package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
- package/src/scripts/measure_turn_end_gate.ts +61 -1
- package/src/scripts/merge_clearance.ts +225 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/network_sources.ts +236 -0
- package/src/scripts/no_go_deny_rows.ts +225 -0
- package/src/scripts/orchestration_record.ts +15 -2
- package/src/scripts/plan_test_shards.ts +103 -0
- package/src/scripts/pr_url_reminder_hook.ts +10 -0
- package/src/scripts/print_required_checks.ts +5 -5
- package/src/scripts/probe_depth_shadow.ts +406 -0
- package/src/scripts/probe_turnaround.ts +342 -10
- package/src/scripts/ratification_subject.ts +176 -0
- package/src/scripts/rdp_gate_classify.ts +1 -0
- package/src/scripts/rdp_quality_eval.ts +1 -0
- package/src/scripts/release.ts +26 -55
- package/src/scripts/release_drill.ts +52 -23
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -1
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_project_contract.ts +123 -0
- package/src/scripts/report_reducible_classes.ts +342 -0
- package/src/scripts/report_required_checks_drift.ts +5 -3
- package/src/scripts/report_skill_host_census.ts +199 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/retro.ts +758 -0
- package/src/scripts/retro_facts.ts +575 -0
- package/src/scripts/retro_queue.ts +739 -0
- package/src/scripts/retro_session_facts.ts +218 -0
- package/src/scripts/retro_sweep.ts +493 -0
- package/src/scripts/retro_triage.ts +126 -0
- package/src/scripts/roadmap_context.ts +2 -2
- package/src/scripts/roadmap_drain_queue.ts +601 -0
- package/src/scripts/run_supervise.ts +24 -2
- package/src/scripts/schemas/agent-settings.schema.json +0 -16
- package/src/scripts/schemas/command.schema.json +3 -3
- package/src/scripts/schemas/review-findings.schema.json +8 -0
- package/src/scripts/schemas/skill.schema.json +7 -6
- package/src/scripts/schemas/subagent.schema.json +33 -2
- package/src/scripts/score_skill_selection.ts +5 -2
- package/src/scripts/second_brain_retrieval.ts +1 -0
- package/src/scripts/second_brain_run.ts +1 -0
- package/src/scripts/self_repair_cli.ts +563 -87
- package/src/scripts/self_review_gate.ts +59 -4
- package/src/scripts/session_register_hook.ts +91 -4
- package/src/scripts/sessions_cli.ts +100 -5
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
- package/src/scripts/skill_trigger_eval.ts +4 -2
- package/src/scripts/source_adapters.ts +183 -0
- package/src/scripts/step_receipt.ts +100 -0
- package/src/scripts/sync_pr_branch.ts +4 -0
- package/src/scripts/test_council_qualification.ts +1 -1
- package/src/scripts/trigger_eval_grandfather.json +3 -49
- package/src/scripts/trigger_eval_rotation.ts +31 -3
- package/src/scripts/ui_conformance_probe.ts +405 -1
- package/src/scripts/update_counts.ts +230 -11
- package/src/scripts/update_invite_hook.ts +245 -0
- package/src/scripts/update_notice_hook.ts +298 -0
- package/src/scripts/validate_frontmatter.ts +85 -0
- package/src/scripts/worker_reuse_shadow_report.ts +121 -0
- package/src/scripts/worktree_cleanup_check.ts +915 -121
- package/src/server/io/yamlIO.ts +2 -2
- package/src/server/schemas/settings.ts +37 -23
- package/src/shared/brandTokenDocument.ts +46 -0
- package/src/shared/brandTokenPaths.ts +43 -0
- package/src/shared/settingsCarveOut.ts +0 -8
- package/src/shared/skillRanking.ts +106 -5
- package/src/shared/userMd/formAdapter.ts +15 -1
- package/src/shared/userMd/schema.ts +22 -0
- package/src/templates/agent-user.md +4 -0
- package/src/templates/agent-user.yml +4 -0
- package/dist/cli-delegate/chunk-4DBG5K7M.js +0 -1123
- package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
- package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
- package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
- package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
- package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -1,21 +1,35 @@
|
|
|
1
|
-
Surface Class,Threat,Source Refs,Abuse Case,Required Controls,Negative Tests,Severity
|
|
2
|
-
authentication,Credential stuffing / brute force,"ATT&CK T1110, CWE-307",Attacker replays breached credential lists against login,Rate-limit per account
|
|
3
|
-
authentication,Session fixation / insufficient invalidation,"CWE-384, ATT&CK T1563",Attacker fixes a session id pre-login or reuses one post-logout/password-change,Rotate session id on login + privilege change; invalidate all sessions on password reset,Test: session id differs pre/post login; old token rejected after reset,HIGH
|
|
4
|
-
authentication,Password-reset token abuse,CWE-640,Attacker enumerates/reuses reset tokens or intercepts via referrer leak,"Single-use, short-TTL, hashed-at-rest tokens; uniform response on unknown email; no token in URL logs",Test: token unusable twice; expired token rejected; response identical for known/unknown email,HIGH
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
Surface Class,Threat,Source Refs,Abuse Case,Required Controls,Negative Tests,Severity
|
|
2
|
+
authentication,Credential stuffing / brute force / password spraying,"ATT&CK T1110, CWE-307, ASVS 5.0 V6 Authentication","Attacker replays breached credential lists against login, or sprays one common password across many accounts so no single account trips its own counter; the code resend, the MFA challenge and the invite endpoint are hit the same way and are usually left unthrottled","Rate-limit per account and per source, and separately on the failure rate across accounts so spraying is visible where a per-account counter is not; lockout with jitter; breached-password check; MFA; throttle the one-time-code resend, the MFA challenge and the invite endpoint like the login itself, and never let a resend reset the failure counter; recovery stays reachable while an account is throttled, so throttling is not a denial of service against the owner; admit the verifier's cost for an unknown identity too, so response time does not say which addresses exist","Test: >N failed logins -> 429/lockout; lockout not bypassable via case-variant email, a Unicode-equivalent address, or a rotated source address; one password tried across many accounts trips the cross-account rate; a code resend does not reset the counter; response time for a known and an unknown identity is not separable. Decided by: NO CHECK IN THIS REPOSITORY - nothing here exercises a consumer's login endpoint; the deciding check is the consumer's own test suite",HIGH
|
|
3
|
+
authentication,Session fixation / insufficient invalidation,"CWE-384, ATT&CK T1563",Attacker fixes a session id pre-login or reuses one post-logout/password-change,Rotate session id on login + privilege change; invalidate all sessions on password reset,Test: session id differs pre/post login; old token rejected after reset,HIGH
|
|
4
|
+
authentication,Password-reset token abuse,CWE-640,Attacker enumerates/reuses reset tokens or intercepts via referrer leak,"Single-use, short-TTL, hashed-at-rest tokens; uniform response on unknown email; no token in URL logs",Test: token unusable twice; expired token rejected; response identical for known/unknown email,HIGH
|
|
5
|
+
authentication,Account enumeration through an observable difference,"CWE-204, CWE-203, CWE-208, ASVS 5.0 V6 Authentication","The login, reset, sign-up or verification response says whether an email address is already registered: a different message, status code, redirect target or cookie, or an early return before the verifier runs, tells the attacker which account exists","One response shape for known and unknown identities at every identity entry point; the verifier path runs for an unknown identity too; sign-up for an address that already exists returns the same response as a new one and mails the owner a notice instead; a deliberately disclosing flow is a written project decision recorded with the flow, never a default and never a defect when it is written down","Test: a known and an unknown identity produce the same status, body category, redirect and cookies on login, reset request, sign-up and verification resend; sign-up for a registered address emits a notice to the owner and no distinguishing response. Decided by: NO CHECK IN THIS REPOSITORY - nothing here runs a consumer's identity flow; the deciding check is the consumer's own test suite, written as the equivalence case test-case-discovery names",HIGH
|
|
6
|
+
authentication,Unverified email ownership granting privilege,"CWE-287, CWE-640, ASVS 5.0 V6 Authentication","An address nobody proved they control reaches a privileged state: sign-up grants access before verification, a mail scanner's GET on the verification or magic link consumes it before the person sees it, or two concurrent requests both spend a verification token that was never single-use","No privilege before proven ownership; the link's GET is safe and the state change needs an explicit confirmation a scanner will not perform; the token is single-use, short-lived and consumed atomically under concurrency; a resend invalidates the previous token; changing the address returns the account to the unverified state",Test: an account whose address is unverified cannot reach the privileged action; a plain GET on the verification link does not consume it; two concurrent consumptions of one token yield exactly one success; a resend makes the previous token unusable. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite,HIGH
|
|
7
|
+
authentication,Password acceptance weakened by composition and handling rules,"CWE-521, ASVS 5.0 V6 Authentication","Composition rules, forced periodic rotation, a low maximum length, a blocked paste or a missing breached-and-common screen push people towards predictable passwords the attacker already holds","Accept the length and character range the authority sets, without composition rules and without scheduled rotation; rotate on evidence of compromise only; allow paste and password managers; screen against a breached-and-common list; normalise Unicode before the check; every value defers to ASVS 5.0 V6 Authentication and NIST SP 800-63B, never to this corpus",Test: a long passphrase and a pasted password are accepted; a password on the breached list is refused with a reason the person can act on; no scheduled expiry forces a change. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite against the authority named in Required Controls,MEDIUM
|
|
8
|
+
authentication,Fast or home-made password storage,"CWE-916, CWE-759, ASVS 5.0 V6 Authentication, ASVS 5.0 V11 Cryptography","Passwords stored under a general-purpose hash, salted or not, or under a hand-rolled salt scheme, so a stolen table is cracked at speed; or an over-long input is silently truncated at the algorithm's own limit; or the pepper sits in the repository or in the same store as the hash","A password hashing function the authority names, with its parameters taken from the authority and never from this corpus; never a general-purpose hash - MD5, SHA-1 and every SHA-2 included, salted or not - and never an invented salt scheme; the salt is per-password and generated by the library; rehash on a successful login once the parameters have moved; refuse or pre-digest an input past the algorithm's own length limit rather than truncating it; a pepper, where one is used, lives outside the credential store with a rotation plan and is never a literal in the tree - its absence is not a finding","Test: the stored value is produced by the platform's password hashing API and checked through its verify primitive, never by comparing digests; an input past the algorithm's limit is refused or pre-digested, never silently cut; a login under outdated parameters rewrites the stored value. Decided by: PARTIAL CHECK IN THIS REPOSITORY - ai-code-blindspots carries a password-scoped fast-hash grep that catches the authoring-time shape; the deciding check is the consumer's own test suite and static analysis",CRITICAL
|
|
9
|
+
authentication,Unsafe secret comparison and home-made credential primitives,"CWE-208, CWE-338, ASVS 5.0 V11 Cryptography","A token, one-time code, signature or MAC compared with the language's ordinary equality leaks its prefix through timing; or the project mints its own token or one-time code from a non-cryptographic source an attacker can predict from a seed","Compare every secret with the platform's constant-time primitive and respect that primitive's length precondition; draw every token, one-time code and salt from the platform's cryptographically secure random source; never invent a credential primitive where the library ships one","Test: no equality operator compares a token, one-time code, signature or MAC anywhere on the identity path; codes drawn repeatedly show no sequence reproducible from a seed. Decided by: PARTIAL CHECK IN THIS REPOSITORY - ai-code-blindspots carries a raw-secret-equality grep that catches the authoring-time shape; the deciding check is the consumer's own test suite and static analysis",HIGH
|
|
10
|
+
authentication,Password reset beyond the token,"CWE-640, CWE-362, ASVS 5.0 V6 Authentication, ASVS 5.0 V7 Session Management","The reset link is built from an attacker-controlled Host header, or leaks through the Referrer of a third-party asset on the reset page; or the reset signs the person straight in, leaves the other sessions alive, satisfies the second factor, or is spent twice by concurrent requests","Build the link from server configuration, never from a request header; no third-party asset and no secret in the query string on the reset page; the reset ends every other session and the remembered-device state; it does not sign the person in and does not satisfy the second factor; single use enforced atomically under concurrency; the owner is notified on the channel that was already verified",Test: a forged Host header does not change the link's origin; the reset page loads no third-party asset; after a reset the pre-reset session token is rejected and a second factor is still demanded; two concurrent uses of one token yield exactly one success. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite,HIGH
|
|
11
|
+
authentication,Identity or credential change without fresh re-authentication or notice,"CWE-620, CWE-778, ASVS 5.0 V6 Authentication, ASVS 5.0 V16 Security Logging and Error Handling","A hijacked session can change the account's email address, phone number, password, MFA factor, passkey, recovery codes or a linked identity without proving the person is still present, and nobody is told: the channel that was already verified gets no notice, and a sign-in from an unrecognised device is silent","Every identity mutation demands fresh re-authentication at the assurance the factor being changed already carries; the previously verified address or number is notified and the change is reversible for a window the project states; a sign-in from an unrecognised device notifies the owner; each event is logged with actor, time and outcome, and never with the secret","Test: each identity mutation refuses without a fresh re-authentication, and a lower-assurance factor does not satisfy it; the previously verified channel receives the notice; the log line for each event carries no credential substring. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite",HIGH
|
|
12
|
+
authentication,MFA enforced only in the interface or undercut by its recovery path,"CWE-308, ASVS 5.0 V6 Authentication",The second factor is a screen the client can skip because the server already issued a full session; or the recovery path is weaker than the factor it replaces; or the TOTP seed sits in the credential store in plaintext and the backup codes are stored unhashed or stay valid after use,"The server issues no privileged session until the factor is verified - the challenge is a state the server holds, not a screen the client renders; recovery is at least as strong as the factor it replaces, and is itself throttled and notified; the shared seed is encrypted at rest under a key held outside the credential store; backup codes are hashed like passwords and are single-use; enrolling or removing a factor is an identity mutation under its own row",Test: a request that skips the challenge step reaches no privileged action; a backup code fails on its second use; the stored seed is not readable from the credential store alone. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite,HIGH
|
|
13
|
+
authentication,Persistent login and incomplete logout,"CWE-613, CWE-539, ASVS 5.0 V7 Session Management","A remember-me token lifted from a device reaches a sensitive action without a fresh login; or logout clears the client and leaves the server session, the remembered-device record and the federated session alive","A remembered session carries a lower assurance and never satisfies a sensitive action on its own; the remember-me token is per-device, rotated on use, and revocable from a session list the owner can see; logout invalidates the server-side state, the remember-me record and the cookie, and offers to end the federated session too; every session ends on a credential change","Test: a remembered session is re-challenged at a sensitive action; after logout the previous token is rejected server-side, not merely absent from the client; revoking a device from the session list rejects that device's token. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite",MEDIUM
|
|
14
|
+
authentication,Authentication token in script-readable browser storage,CWE-922,"A session, access or refresh token is written to localStorage, sessionStorage, IndexedDB or another store page script can read, so any injected script reads it and replays it from the attacker's own device for as long as the token lives","Carry the session in a cookie marked HttpOnly, Secure and SameSite, which page script cannot read; never persist a session, access or refresh token in Web Storage or IndexedDB; where an architecture requires a script-held bearer token, keep it in memory only, short-lived and narrowly scoped, and treat that as shortening the exposure rather than preventing theft during a script compromise; a cookie-borne session still needs the login and state-changing CSRF controls of its own rows","Test: after sign-in and after the federated callback, no session, access or refresh token value is present in localStorage, sessionStorage or IndexedDB, whether written with setItem or by property assignment; the session cookie carries HttpOnly, Secure and SameSite. Decided by: check_account_surface reports the setItem and property-assignment writes lexically; the deciding check is the consumer's own browser test suite",HIGH
|
|
15
|
+
authentication,Federated sign-in account takeover,"CWE-287, CWE-352, ASVS 5.0 V10 OAuth and OIDC","A provider sign-in is linked on email equality, so any identity provider that lets an attacker assert someone else's mailbox takes the local login over; or an email claim the provider never verified is trusted; or the authorization response is never bound to the request that began it, or arrives from a different issuer than the one the flow asked","Identity is issuer plus subject, never the address alone; an unverified email claim links nothing and grants nothing; bind the response to the request with a state and a nonce checked server-side against the session that started the flow; pin the issuer and the audience per provider and refuse a response from any other; linking a provider onto an existing local account is an identity mutation under its own row",Test: a provider response carrying a known address but a different issuer or subject creates no link; an unverified email claim grants nothing; a response with a missing or replayed state is refused; a token minted for another audience is refused. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite,CRITICAL
|
|
16
|
+
authentication,Self-contained token validation bypass,"CWE-347, ASVS 5.0 V9 Self-contained Tokens","The verifier accepts an unsigned algorithm, takes the verification key from the token's own header, skips the issuer audience or expiry check, or accepts an ID token where an access token was required","Pin the accepted algorithms and the key source server-side; never read a key or a key location out of the token; check issuer, audience, expiry and not-before on every request; keep ID tokens and access tokens distinct and refuse the wrong kind; call the library's verify entry point rather than decoding the payload and inspecting claims by hand",Test: a token declaring no signature algorithm is refused; a token signed with a key named in its own header is refused; an expired token and a token for another audience are refused; an ID token presented as an access token is refused. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite,CRITICAL
|
|
17
|
+
authentication,Login cross-site request forgery,"CWE-352, ASVS 5.0 V6 Authentication","An attacker makes the victim's browser log in to an account the attacker controls, so the victim's later activity accrues to it; the federated callback is the same shape when its state is not bound to the session",The login form and the federated callback carry a per-request anti-forgery token bound to the pre-login session; the session identifier rotates on login; the post-login landing performs no action on a cross-site request,Test: a cross-site POST to the login endpoint without the bound token is refused; the session identifier differs before and after login. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own test suite,MEDIUM
|
|
18
|
+
authentication,Signup abuse and disposable addresses as a policy choice,"CWE-799, ASVS 5.0 V2 Validation and Business Logic","Automated sign-up drains invites, trial credit, outbound mail reputation or a free tier; the reflex is a disposable-domain blocklist that also shuts out privacy-conscious people and quietly becomes a third-party call on the registration path","State the product's posture first - allow, warn, challenge or block - because the right answer differs between a consumer product and a paid B2B one; this is a policy row and names no list: any blocklist or reputation feed is a consumer dependency the consumer owns and ages; never a synchronous third-party call per registration request - decide asynchronously and degrade to allow when the dependency is unreachable; throttle and cost the sign-up path itself; verification before privilege carries most of the weight a blocklist is reached for","Test: registration completes with the reputation dependency unreachable; the posture is written down with the flow and the implemented outcome matches it; a scripted burst of sign-ups from one source is throttled. Decided by: NO CHECK IN THIS REPOSITORY - this is a product policy, not a defect class; the deciding check is the consumer's own written posture and test suite",MEDIUM
|
|
19
|
+
authorization,IDOR / missing object-level check,"CWE-639, OWASP API1",Authenticated user swaps an id in the request and reads/writes another user's object,Object-level ownership check in policy (never only route middleware); deny-by-default,"Test: user A GET/PUT on B's resource id → 403/404, for EVERY verb",CRITICAL
|
|
20
|
+
authorization,Privilege escalation via mass assignment,CWE-915,Attacker posts role/is_admin fields the endpoint binds blindly,Explicit allowlist DTO/fillable; server-side role assignment only via admin flow,Test: POST with role=admin → field ignored AND audit-logged,HIGH
|
|
21
|
+
tenancy,Cross-tenant read via unscoped query,CWE-639,Missing tenant_id scope on a query/report/export leaks another tenant's rows,Global scope at the ORM/repository layer; tenant from session never from request; scoped test fixtures,Test: tenant A token + tenant B resource id across list/show/export/report → empty/403,CRITICAL
|
|
22
|
+
tenancy,Cross-tenant write via background job,CWE-862,Queued job re-resolves tenant from payload an attacker influenced,Jobs carry tenant context sealed at dispatch; consumer re-asserts scope before write,Test: forged job payload with foreign tenant_id → rejected,HIGH
|
|
23
|
+
file-upload,Malicious file / polyglot upload,"CWE-434, ATT&CK T1105",Attacker uploads webshell/polyglot accepted by extension-only check,Content-sniff + allowlist MIME; store outside webroot with random names; never execute; AV scan if executable risk,Test: .php/.svg-with-script renamed .jpg → rejected or neutralized; direct URL fetch of stored file cannot execute,HIGH
|
|
24
|
+
file-upload,SSRF via user-supplied URL,"CWE-918, ATT&CK T1090",URL-fetch feature pointed at cloud metadata / internal services,Deny private/link-local ranges post-DNS-resolution; scheme allowlist; egress proxy; response-size cap,Test: http://169.254.169.254/ and DNS-rebinding host → blocked,CRITICAL
|
|
25
|
+
external-integration,Webhook forgery / replay,CWE-345,Attacker posts forged or replayed events to the webhook consumer,HMAC signature verification with rotation; timestamp tolerance window; idempotency key store,Test: bad signature → 401; stale timestamp → rejected; duplicate event id processed once,HIGH
|
|
26
|
+
public-endpoint,Resource exhaustion / scraping,"CWE-770, ATT&CK T1499",Unauthenticated endpoint hammered for DoS or bulk data harvest,Rate limit + cache; no expensive queries pre-auth; pagination caps; no PII in public responses,Test: response carries rate-limit headers; page size capped server-side,MEDIUM
|
|
27
|
+
billing,Race condition on balance / double-spend,CWE-362,Parallel requests redeem the same credit/refund twice,DB-level constraint or SELECT FOR UPDATE / idempotency key on money mutations; ledger over mutable balance,Test: N parallel redeems of one voucher → exactly one success,CRITICAL
|
|
28
|
+
billing,Price/amount tampering,CWE-602,Client-supplied price or currency trusted at checkout,Recompute amounts server-side from catalog; signed cart or server-held cart only,Test: tampered client amount → server total unchanged,CRITICAL
|
|
29
|
+
secrets,Secret leakage via logs / errors / VCS,"CWE-532, ATT&CK T1552","Key appears in exception payload, debug log, or committed .env",Centralized secret manager; logger redaction list; pre-commit secret scan; scoped short-lived tokens,Test: forced exception on auth path → no credential substring in log sink,HIGH
|
|
30
|
+
data-exposure,Over-broad serializer / API resource,"CWE-213, OWASP API3","Serializer returns internal fields (cost, flags, foreign tenant refs) the UI ignores but attackers read",Explicit field allowlist per resource; separate admin vs public serializers; contract test on response shape,Test: schema-diff response against documented contract → no undocumented fields,MEDIUM
|
|
31
|
+
infrastructure,Unrestricted ingress to a management or database port,"CWE-1327, ATT&CK T1190",Attacker reaches SSH/RDP or a database engine straight from the internet because a security-group or firewall rule allows 0.0.0.0/0,"Deny-by-default ingress; management and database ports reachable only via bastion, VPN, or private link; CIDR scoped to known ranges; never 0.0.0.0/0 on 22/3389/3306/5432/6379/27017",Test: a rule with cidr_blocks 0.0.0.0/0 on a management or database port is rejected. Decided by: NO CHECK IN THIS REPOSITORY - nothing here parses HCL or cloud config; the deciding check is the consumer's own IaC policy scanner,CRITICAL
|
|
32
|
+
infrastructure,Object storage public by default,"CWE-732, OWASP A05",Bucket or container created without a block-public-access setting so any object URL is world-readable,Block public access at account AND bucket level; explicit policy allowlist instead of a public ACL; serve objects via signed URLs or a CDN origin identity,Test: storage created with no explicit public-access block is rejected; anonymous GET of a stored object returns 403. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own IaC policy scanner or a cloud posture tool,HIGH
|
|
33
|
+
infrastructure,Missing encryption at rest or in transit,"CWE-311, CWE-319",Volume snapshot bucket or database instance created with no encryption block; endpoint accepts a plaintext connection,Encryption block mandatory on every storage and database resource; customer-managed key where the data class requires it; TLS-only bucket policy and listener; reject plaintext listeners,Test: a storage or database resource with no encryption block is rejected; a plaintext connection to the endpoint is refused. Decided by: NO CHECK IN THIS REPOSITORY - the deciding check is the consumer's own IaC policy scanner,HIGH
|
|
20
34
|
infrastructure,Wildcard IAM action or resource,"CWE-269, ATT&CK T1078.004",A role policy grants Action * or Resource * so one compromised workload credential reaches every service and object in the account,Enumerate actions and resource ARNs; one role per workload; permission boundary or service control policy on privileged roles; no wildcard outside a named reviewed exception,"Test: a policy document containing Action ""*"" or Resource ""*"" is rejected or carries a named exception. Decided by: NO CHECK IN THIS REPOSITORY - nothing here parses IAM policy documents; the deciding check is the consumer's own IaC policy scanner",CRITICAL
|
|
21
|
-
infrastructure,Credential in an IaC or vars file instead of a secret manager,"CWE-798, ATT&CK T1552.001",Password token or key written as a literal into a .tf .tfvars or .yaml file and committed,Secret-manager reference or runtime-injected env var; never a literal in IaC or vars files; treat the state file as sensitive and store it encrypted with restricted access,
|
|
35
|
+
infrastructure,Credential in an IaC or vars file instead of a secret manager,"CWE-798, ATT&CK T1552.001",Password token or key written as a literal into a .tf .tfvars or .yaml file and committed,Secret-manager reference or runtime-injected env var; never a literal in IaC or vars files; treat the state file as sensitive and store it encrypted with restricted access,Test: a literal credential in a tracked IaC or vars file fails the build. Decided by: check_secret_leak (src/scripts/check_secret_leak.ts) inside THIS repository - it has no extension allowlist so .tf and .yaml are in scope; for a CONSUMER the deciding check is the gitleaks workflow the package ships as a template that the consumer must copy,HIGH
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: high
|
|
3
|
+
name: type-design
|
|
4
|
+
description: "Build an original font from lettering or a brief — measured spec, code-built outlines, gated build, rendered proof. Use to turn a wordmark into a font."
|
|
5
|
+
domain: product
|
|
6
|
+
personas:
|
|
7
|
+
- design-director
|
|
8
|
+
workspaces:
|
|
9
|
+
- engineering
|
|
10
|
+
packs:
|
|
11
|
+
- frontend-design
|
|
12
|
+
trust:
|
|
13
|
+
level: experimental
|
|
14
|
+
install:
|
|
15
|
+
removable: true
|
|
16
|
+
scope:
|
|
17
|
+
write: []
|
|
18
|
+
verification_reason: "execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes."
|
|
19
|
+
execution:
|
|
20
|
+
type: manual
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# type-design
|
|
24
|
+
|
|
25
|
+
Design an original font as a **constructed system**: measure parameters, let
|
|
26
|
+
code build every outline from measured parts, set spacing before kerning, and
|
|
27
|
+
build through gates that measure outlines, metrics, coverage and fidelity — with
|
|
28
|
+
a rendered proof the agent looked at. The model perceives, decides and judges;
|
|
29
|
+
code writes every coordinate.
|
|
30
|
+
|
|
31
|
+
The skill bundles no script and no font. It runs a pinned peer-side toolchain in
|
|
32
|
+
the consumer's environment ([`references/toolchain.md`](references/toolchain.md)).
|
|
33
|
+
|
|
34
|
+
## When to use
|
|
35
|
+
|
|
36
|
+
- "Turn this wordmark into a font", "the rest of the alphabet in this lettering".
|
|
37
|
+
- "Design an original display face for our brand" from a written brief.
|
|
38
|
+
- A logo or a lettering image exists and the person wants a typeable family.
|
|
39
|
+
|
|
40
|
+
## When NOT to use
|
|
41
|
+
|
|
42
|
+
- Choosing or pairing existing fonts, or building a type scale →
|
|
43
|
+
`typography-system`.
|
|
44
|
+
- Making a logo or a single mark → `logo-generation`; tracing one icon or mark
|
|
45
|
+
→ `svg-authoring`; an icon font from an existing set → `iconography`.
|
|
46
|
+
- Reproducing a typeface someone else published — license it instead (§ Rights gate).
|
|
47
|
+
|
|
48
|
+
## The honest limit
|
|
49
|
+
|
|
50
|
+
A coherent **display or brand family** — one weight, Latin, shared stems,
|
|
51
|
+
overshoot and spacing — is in reach. **Text-grade optical refinement** (hinting,
|
|
52
|
+
optical compensation at small sizes, a multi-weight interpolated family) is a
|
|
53
|
+
type designer's work. Say so before the first build, and never label a result
|
|
54
|
+
beyond what the gates showed (§ Maturity).
|
|
55
|
+
|
|
56
|
+
## Rights gate — before any trace
|
|
57
|
+
|
|
58
|
+
1. **Own or commissioned lettering** proceeds.
|
|
59
|
+
2. **Lettering set in an existing typeface** — name the typeface and recommend
|
|
60
|
+
licensing it instead of reconstructing it. Proceed only on a stated decision
|
|
61
|
+
that the result is a different design.
|
|
62
|
+
3. **A third party's mark** stops until its owner's rights are stated.
|
|
63
|
+
4. **An origin the agent cannot establish** is treated as not owned, and asked
|
|
64
|
+
about. Never assume a lettering image is the person's own.
|
|
65
|
+
|
|
66
|
+
Record the class (`own`, `commissioned`, `typeface-named`, `third-party`,
|
|
67
|
+
`unknown`) in the spec's source block.
|
|
68
|
+
|
|
69
|
+
## License — asked, never stamped
|
|
70
|
+
|
|
71
|
+
Ask which license the new font carries. Record the answer in `font-spec.yaml`
|
|
72
|
+
and in the font's name table (license description and URL). With no answer the
|
|
73
|
+
license is `unknown`, written as such in both places. **Never** choose one on
|
|
74
|
+
the person's behalf: a default license is a commitment made for someone else.
|
|
75
|
+
|
|
76
|
+
## No freehand outlines
|
|
77
|
+
|
|
78
|
+
The model never writes path data for a glyph by hand and never ships a freehand
|
|
79
|
+
SVG glyph. To change a shape, change a spec parameter or a construction rule and
|
|
80
|
+
let code rebuild. A glyph that cannot be expressed through the spec is a sign the
|
|
81
|
+
spec is missing a parameter — add it.
|
|
82
|
+
|
|
83
|
+
## Procedure
|
|
84
|
+
|
|
85
|
+
0. **Toolchain** — install the pinned set from
|
|
86
|
+
[`references/toolchain.md`](references/toolchain.md) into an isolated
|
|
87
|
+
environment in the consumer tree. Missing and not installable → stop and say
|
|
88
|
+
which tool; never substitute a hand-written approximation.
|
|
89
|
+
1. **Spec first** — write `font-spec.yaml` per
|
|
90
|
+
[`references/font-spec.md`](references/font-spec.md): units per em, vertical
|
|
91
|
+
metrics, stems, contrast, stress angle, overshoot, aperture, terminals,
|
|
92
|
+
spacing, the coverage tier, license and source blocks.
|
|
93
|
+
2. **Path A — from lettering** (raster or SVG, including a wordmark just made by
|
|
94
|
+
`logo-generation` or `image-generation`):
|
|
95
|
+
1. **Ingest** — parse the SVG, or threshold and deskew the raster.
|
|
96
|
+
2. **Segment** — code splits the letters; the model labels a numbered
|
|
97
|
+
**contact sheet** of the segments, never the raw image by eye.
|
|
98
|
+
3. **Trace** with the fill rule declared and counters wound opposite to their
|
|
99
|
+
outer contour (`svg-authoring` § Trace to measure, construct to deliver).
|
|
100
|
+
4. **Measure** the spec from the traced letters, then **normalise** the
|
|
101
|
+
present letters to it, and extend per step 4.
|
|
102
|
+
5. A wordmark's one-off tweaks become **alternates or ligatures**, never the
|
|
103
|
+
default forms. A **signature letter** the brief names is a **locked
|
|
104
|
+
glyph**; its drift fails the fidelity gate.
|
|
105
|
+
6. A source below 600 px cap height (or an SVG under 1,000 units) is reported
|
|
106
|
+
as **low confidence** and cannot reach `validated-static` on fidelity —
|
|
107
|
+
a stated default, not a measured one; the benchmark is what can move it.
|
|
108
|
+
3. **Path B — from a brief**: brief → spec with numbers → build `n o H O` →
|
|
109
|
+
render the proof sheet → the person asking **approves the four control
|
|
110
|
+
glyphs** before anything else is built. A rejection changes the spec, and
|
|
111
|
+
the four are rebuilt.
|
|
112
|
+
4. **Construction order** — `n o H O` first, then the **derivation chains**:
|
|
113
|
+
n → h m u r · o → c e b d p q · H → E F I L T · O → C D G Q. Then the
|
|
114
|
+
diagonals (A K M N V W X Y k v w x y), then the free shapes (a g s S f t z and
|
|
115
|
+
the figures), then composites for diacritics through anchors — the German set
|
|
116
|
+
(ä ö ü Ä Ö Ü ß ẞ „ “ ‚ ‘) included when the tier asks for it.
|
|
117
|
+
5. **Spacing before kerning** — sidebearings from edge classes first, kerning
|
|
118
|
+
classes only afterwards ([`references/gates.md`](references/gates.md) § 4).
|
|
119
|
+
6. **Build and gate** — UFO source → compiled `ttf` and `woff2`. Run every gate
|
|
120
|
+
in [`references/gates.md`](references/gates.md); each prints a threshold and
|
|
121
|
+
a failure message to act on.
|
|
122
|
+
7. **Rendered proof** — generate a proof SVG whose specimens are `<text>`
|
|
123
|
+
elements set in the new family (waterfall 12 to 72 px, `HHOHH nnonn`, every
|
|
124
|
+
letter between n and n and between o and o, the kerning strings, the wordmark
|
|
125
|
+
text), the built `woff2` in its own `@font-face`; witness the SVG itself
|
|
126
|
+
(an `.html` target reports no text — gates § 5):
|
|
127
|
+
```bash
|
|
128
|
+
agent-config ui:render proof/proof.svg --profile asset
|
|
129
|
+
```
|
|
130
|
+
The new family must read `loaded`. Open the PNG and state what you saw.
|
|
131
|
+
8. **Fidelity (path A)** — the wordmark text set in the new font against the
|
|
132
|
+
source by silhouette IoU (gates § 6); produce the diff overlay and look at it.
|
|
133
|
+
9. **Fallback** — emit the metric-matched fallback `@font-face` (gates § 7).
|
|
134
|
+
10. **Repair budget** — a failing gate gets at most **three** repair rounds.
|
|
135
|
+
After that the QA report names the gate and the label stays below
|
|
136
|
+
`validated-static`.
|
|
137
|
+
|
|
138
|
+
## Outputs — in the consumer tree
|
|
139
|
+
|
|
140
|
+
UFO source, `font-spec.yaml`, built `woff2` and `ttf`, the proof page with its
|
|
141
|
+
PNG, and the QA report — at the location `design-system-capture` conventions
|
|
142
|
+
give the project's design-system assets, **never inside the package**. Record
|
|
143
|
+
the family there as a custom family with its source and license.
|
|
144
|
+
|
|
145
|
+
### Maturity — exactly one label
|
|
146
|
+
|
|
147
|
+
| Label | Means |
|
|
148
|
+
|---|---|
|
|
149
|
+
| `concept` | spec and control glyphs exist; the tier is not covered |
|
|
150
|
+
| `prototype` | the tier is covered and the font builds; at least one gate is open |
|
|
151
|
+
| `validated-static` | every gate in `references/gates.md` that applies to the path is green (gate 6 applies to path A only), the witness read `loaded`, and the proof was looked at |
|
|
152
|
+
|
|
153
|
+
Never a claim the run cannot show.
|
|
154
|
+
|
|
155
|
+
## Output format
|
|
156
|
+
|
|
157
|
+
1. **QA report** — coverage tier, maturity label, the license (or `unknown`),
|
|
158
|
+
the rights class, and each gate with its measured value, threshold and
|
|
159
|
+
result.
|
|
160
|
+
2. **Witness reading** — the face state the asset profile reported for the new
|
|
161
|
+
family, the PNG path, and one sentence on what the agent saw in it.
|
|
162
|
+
3. **Fidelity (path A)** — per-glyph and per-word IoU, the locked glyph's IoU,
|
|
163
|
+
the registration they were measured against, and the overlay path.
|
|
164
|
+
4. **Files** — every output path, read back from disk, with byte size.
|
|
165
|
+
|
|
166
|
+
## Gotcha
|
|
167
|
+
|
|
168
|
+
- **A plausible font is not a system.** Glyphs that each look fine and share no
|
|
169
|
+
stems, overshoot or spacing pass a glance and fail the consistency gate —
|
|
170
|
+
run it, do not eyeball it.
|
|
171
|
+
- **Same-direction counters paint solid.** Under `fill-rule: nonzero`, the default, an
|
|
172
|
+
`o` whose inner contour winds like its outer one fills its counter.
|
|
173
|
+
- **Kerning cannot rescue spacing.** Kerning pairs on unspaced glyphs grow
|
|
174
|
+
without bound and still look uneven; set sidebearings first.
|
|
175
|
+
- **The witness reads the face, not the look.** A fallback face that resembles
|
|
176
|
+
the new one reads `error` there — trust the state, not the screenshot.
|
|
177
|
+
|
|
178
|
+
## Do NOT
|
|
179
|
+
|
|
180
|
+
- Do NOT trace lettering whose rights class is `unknown`, or `third-party` until
|
|
181
|
+
the owner's rights are stated and it is recorded as `commissioned`.
|
|
182
|
+
- Do NOT write or ship glyph path data by hand.
|
|
183
|
+
- Do NOT stamp a license the person did not give.
|
|
184
|
+
- Do NOT claim a coverage tier the font does not cover, or `validated-static`
|
|
185
|
+
with a gate open.
|
|
186
|
+
- Do NOT write outputs into the package, or add a font binary to it.
|
|
187
|
+
|
|
188
|
+
## See also
|
|
189
|
+
|
|
190
|
+
Named rather than linked: some of these neighbours ship in other packs.
|
|
191
|
+
|
|
192
|
+
- `typography-system` — choosing and pairing fonts; consumes a custom family.
|
|
193
|
+
- `svg-authoring` — trace-to-measure and the counter rule this skill reuses.
|
|
194
|
+
- `logo-generation`, `brand-identity` — where a wordmark is born and handed here.
|
|
195
|
+
- `design-system-capture` — where the finished family is recorded.
|
|
196
|
+
- `supply-chain-intake` — the gate every toolchain pin passed.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# `font-spec.yaml` — the parameters every outline is built from
|
|
2
|
+
|
|
3
|
+
The spec is the only place a shape decision lives. Code reads it and builds the
|
|
4
|
+
outlines; the model changes it and lets code rebuild. A value the run measured
|
|
5
|
+
carries `measured: true` and the glyphs it came from; a value the brief set
|
|
6
|
+
carries `measured: false`.
|
|
7
|
+
|
|
8
|
+
```yaml
|
|
9
|
+
family: "Acme Display"
|
|
10
|
+
style: "Regular"
|
|
11
|
+
units_per_em: 1000
|
|
12
|
+
|
|
13
|
+
vertical: # font units, baseline = 0
|
|
14
|
+
baseline: 0
|
|
15
|
+
x_height: 520
|
|
16
|
+
cap_height: 700
|
|
17
|
+
ascender: 760
|
|
18
|
+
descender: -220
|
|
19
|
+
|
|
20
|
+
stems: # font units, measured by ray-cast (gates § 3)
|
|
21
|
+
lowercase_vertical: 92 # n h m u l i
|
|
22
|
+
lowercase_horizontal: 80 # e bar, t crossbar
|
|
23
|
+
capital_vertical: 100 # H I L
|
|
24
|
+
capital_horizontal: 86 # H bar, E arms
|
|
25
|
+
|
|
26
|
+
contrast: 0.86 # thinnest / thickest stroke on o and O
|
|
27
|
+
stress_angle: 0 # degrees from vertical; negative leans left
|
|
28
|
+
overshoot: # share of x-height / cap height, 0.01–0.03
|
|
29
|
+
round: 0.015
|
|
30
|
+
pointed: 0.010
|
|
31
|
+
aperture: 0.42 # opening of c e s a, share of the bowl width
|
|
32
|
+
terminal: "flat" # flat | angled | round | ball
|
|
33
|
+
serif: "none" # none | slab | bracketed | hairline
|
|
34
|
+
|
|
35
|
+
spacing: # sidebearings in font units, per edge class
|
|
36
|
+
straight: 62
|
|
37
|
+
round: 38
|
|
38
|
+
diagonal: 8
|
|
39
|
+
|
|
40
|
+
coverage: "latin-basic" # wordmark | latin-basic | latin-de
|
|
41
|
+
|
|
42
|
+
license:
|
|
43
|
+
id: "unknown" # the answer the person gave, or unknown
|
|
44
|
+
url: ""
|
|
45
|
+
name_table: true # written into the name table at build
|
|
46
|
+
|
|
47
|
+
source:
|
|
48
|
+
path: "brand/wordmark.png" # path A; omitted for path B
|
|
49
|
+
rights: "own" # own | commissioned | typeface-named | third-party | unknown
|
|
50
|
+
digest: "sha256:…" # of the source file, so a later run knows it is the same image
|
|
51
|
+
resolution_confidence: "ok" # ok | low
|
|
52
|
+
locked_glyphs: ["g"] # signature letters; drift fails gates § 6
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Fields
|
|
56
|
+
|
|
57
|
+
- **`units_per_em`** — 1000 unless the build target asks for 2048.
|
|
58
|
+
- **`vertical`** — baseline, x-height, cap height, ascender, descender. The
|
|
59
|
+
vertical metrics tables are derived from these (gates § 2), never set apart
|
|
60
|
+
from them.
|
|
61
|
+
- **`stems`** — lowercase and capitals, vertical and horizontal. Every straight
|
|
62
|
+
stroke a construction rule draws takes its width from here.
|
|
63
|
+
- **`contrast`** and **`stress angle`** — the ratio of thin to thick on the
|
|
64
|
+
round letters and the axis it rotates around. A monoline face is `1.0` at
|
|
65
|
+
stress angle `0`.
|
|
66
|
+
- **`overshoot`** — how far round and pointed letters cross the baseline and the
|
|
67
|
+
x-height or cap height, as a share of that height.
|
|
68
|
+
- **`aperture`**, **`terminal`**, **`serif`** — the open letters' opening, how
|
|
69
|
+
strokes end, and what sits at their ends.
|
|
70
|
+
- **`spacing`** — sidebearings per edge class, set on H, n, O and o before any
|
|
71
|
+
other glyph (gates § 4).
|
|
72
|
+
- **`license`** — never filled by default (`SKILL.md` § License).
|
|
73
|
+
- **`source`** — path A only: the file, its rights class from the rights gate,
|
|
74
|
+
its digest, whether its resolution is enough for fidelity, and the locked
|
|
75
|
+
glyphs.
|
|
76
|
+
|
|
77
|
+
## Coverage tiers
|
|
78
|
+
|
|
79
|
+
Defined by this skill, not copied from an external glyph-set definition. The
|
|
80
|
+
tier is written into the spec and into the QA report, and nothing claims a tier
|
|
81
|
+
it does not cover.
|
|
82
|
+
|
|
83
|
+
| Tier | Glyphs |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `wordmark` | the letters present in the source, plus their alternates and ligatures, plus `space` and `.notdef` |
|
|
86
|
+
| `latin-basic` | A–Z, a–z, 0–9, `space`, `.notdef`, and `. , : ; ! ? ' " ‘ ’ “ ” - – — ( ) / & @ # % *` |
|
|
87
|
+
| `latin-de` | `latin-basic` plus ä ö ü Ä Ö Ü, both forms of sharp s (ß and ẞ), and the German quotation marks „ “ ‚ ‘ |
|
|
88
|
+
|
|
89
|
+
The coverage gate (gates § 1) lists every glyph the tier names and fails on any
|
|
90
|
+
that is absent.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Gates — every one a peer-side command with a threshold
|
|
2
|
+
|
|
3
|
+
<!-- reference-toc:start (generated by generate_reference_toc — do not edit) -->
|
|
4
|
+
**Contents**
|
|
5
|
+
|
|
6
|
+
- [1. Outline hygiene and coverage](#1-outline-hygiene-and-coverage)
|
|
7
|
+
- [2. Vertical metrics](#2-vertical-metrics)
|
|
8
|
+
- [3. System consistency](#3-system-consistency)
|
|
9
|
+
- [4. Spacing before kerning](#4-spacing-before-kerning)
|
|
10
|
+
- [5. Rendered proof](#5-rendered-proof)
|
|
11
|
+
- [6. Source fidelity — path A](#6-source-fidelity--path-a)
|
|
12
|
+
- [7. Metric-matched fallback](#7-metric-matched-fallback)
|
|
13
|
+
<!-- reference-toc:end -->
|
|
14
|
+
|
|
15
|
+
Each gate runs in the toolchain environment (`toolchain.md`) against the built
|
|
16
|
+
UFO and the compiled `ttf`, prints its measured value beside its threshold, and
|
|
17
|
+
on failure prints a message naming the glyph and what to change in the spec.
|
|
18
|
+
A gate the run did not execute is reported as `not run`, never as passed.
|
|
19
|
+
|
|
20
|
+
The thresholds below are stated defaults (own analysis). The reconstruction
|
|
21
|
+
benchmark is what may move them; nothing else does.
|
|
22
|
+
|
|
23
|
+
## 1. Outline hygiene and coverage
|
|
24
|
+
|
|
25
|
+
- **Every contour closed.** An open contour fails with the glyph and the point
|
|
26
|
+
index.
|
|
27
|
+
- **Counters per glyph** equal an expected table: o 1, e 1, a 1, b d p q 1,
|
|
28
|
+
A 1, D O P Q 1, R 1, B 2, 8 2, 0 1, 4 1 (closed form) or 0 (open form, as the
|
|
29
|
+
spec says), 6 1, 9 1, g 1 or 2 (single- or
|
|
30
|
+
double-storey, as the spec says). A filled or a doubled counter fails.
|
|
31
|
+
- **Points at extrema** on every curve, within 1 unit.
|
|
32
|
+
- **No contour under the size threshold** — an area below 0.05 % of the em
|
|
33
|
+
square is a stray fragment and fails.
|
|
34
|
+
- **Direction correct for the outline format** — outer contours clockwise in
|
|
35
|
+
TrueType (`glyf`) output and counter-clockwise in CFF output, counters wound
|
|
36
|
+
opposite to their outer contour in both.
|
|
37
|
+
- **Fill rule declared before overlap removal** — overlap removal runs on a
|
|
38
|
+
glyph only after its fill rule and contour directions are settled; running it
|
|
39
|
+
first is how a counter disappears.
|
|
40
|
+
- **Coverage** — every glyph the spec's tier names exists and is non-empty
|
|
41
|
+
(`space` excepted). A missing glyph fails with the tier and the name.
|
|
42
|
+
|
|
43
|
+
## 2. Vertical metrics
|
|
44
|
+
|
|
45
|
+
- `OS/2` typo ascender, descender and line gap agree with `hhea` ascender,
|
|
46
|
+
descender and line gap.
|
|
47
|
+
- Both line gaps are `0`.
|
|
48
|
+
- `USE_TYPO_METRICS` (`OS/2.fsSelection` bit 7) is set.
|
|
49
|
+
- `usWinAscent` and `usWinDescent` cover the family's extremes: the highest and
|
|
50
|
+
lowest point of any glyph, diacritics included. A clipped extreme fails with
|
|
51
|
+
the glyph.
|
|
52
|
+
|
|
53
|
+
## 3. System consistency
|
|
54
|
+
|
|
55
|
+
- **Stems by ray-cast at half x-height** — a horizontal ray at `x_height / 2`
|
|
56
|
+
across n h m u l i; every vertical stem it crosses is within **3 %** of the
|
|
57
|
+
spec's `lowercase_vertical`. Capitals the same at half cap height across
|
|
58
|
+
H I L E F T against `capital_vertical`.
|
|
59
|
+
- **Overshoot** — o O e c s reach **1 to 3 %** beyond baseline and x-height or
|
|
60
|
+
cap height, and within 0.5 % of the spec's `overshoot.round`; pointed apexes
|
|
61
|
+
(A V W v w) within 0.5 % of `overshoot.pointed`.
|
|
62
|
+
- **Ink area per glyph group** — the filled share of each glyph's advance box,
|
|
63
|
+
grouped (straight lowercase, round lowercase, capitals, figures), within
|
|
64
|
+
**±12 %** of its group's median. An outlier fails with the glyph.
|
|
65
|
+
|
|
66
|
+
## 4. Spacing before kerning
|
|
67
|
+
|
|
68
|
+
- **Sidebearings from edge classes first** — straight, round and diagonal edges
|
|
69
|
+
take the spec's `spacing` values. Set them on H, n, O and o, check `HHOHH`
|
|
70
|
+
and `nnonn` in the proof, and only then propagate to the derived glyphs.
|
|
71
|
+
- **Kerning classes from edge groups only afterwards** — a kerning class is an
|
|
72
|
+
edge group, never a single glyph, except for a named exception pair.
|
|
73
|
+
- **Collision check** — render the kerning strings (`AVATAR`, `To`, `Ty`, `LT`,
|
|
74
|
+
`P.`, `r,`, `f)` and their German counterparts for `latin-de`) and fail on any
|
|
75
|
+
two glyphs whose outlines intersect.
|
|
76
|
+
- **Features built** — `kern`, `mark` (diacritic anchors), `liga` (where the
|
|
77
|
+
spec defines ligatures) and, where figures exist, `tnum`.
|
|
78
|
+
- **Shaping confirms the features apply** — shape the kerning strings, an
|
|
79
|
+
accented word and a ligature through the shaping binding and fail when the
|
|
80
|
+
shaped advances or glyph ids equal the unshaped ones.
|
|
81
|
+
|
|
82
|
+
## 5. Rendered proof
|
|
83
|
+
|
|
84
|
+
The witness reading, not a gate script: `ui:render --profile asset` over the
|
|
85
|
+
proof SVG reads `loaded` for the new family (`SKILL.md` step 7). `error`,
|
|
86
|
+
`unloaded`, `timeout` or `synthesised` fails, and so does a reading with no text
|
|
87
|
+
in it — the shape an HTML target produces. The agent has looked at the PNG.
|
|
88
|
+
|
|
89
|
+
## 6. Source fidelity — path A
|
|
90
|
+
|
|
91
|
+
Applies to path A only. On path B the QA report reads `not applicable` for this
|
|
92
|
+
gate, which is neither `not run` nor passed.
|
|
93
|
+
|
|
94
|
+
The wordmark text set in the new font, aligned to the source by baseline and
|
|
95
|
+
cap height, compared by **silhouette IoU** with the method `svg-authoring` uses
|
|
96
|
+
for a raster-to-vector conversion (saturated regions, registration recorded as
|
|
97
|
+
`x,y,w,h` in the source's pixel frame, scorer and sample resolution named).
|
|
98
|
+
|
|
99
|
+
- per glyph **≥ 0.90**
|
|
100
|
+
- per word **≥ 0.85**
|
|
101
|
+
- a **locked signature glyph ≥ 0.95**
|
|
102
|
+
|
|
103
|
+
Produce the diff overlay (source and render in two colours, overlap neutral) and
|
|
104
|
+
look at it. A source flagged `resolution_confidence: low` reports these numbers
|
|
105
|
+
but cannot pass this gate.
|
|
106
|
+
|
|
107
|
+
## 7. Metric-matched fallback
|
|
108
|
+
|
|
109
|
+
Emit the fallback `@font-face` for the new family over a named local system face,
|
|
110
|
+
with `size-adjust`, `ascent-override`, `descent-override` and
|
|
111
|
+
`line-gap-override` derived from the built font's own tables — the derivation is
|
|
112
|
+
the one in `docs/guidelines/design-asset-discipline.md` (the swapped-face
|
|
113
|
+
bullet). That is what catalogue tell T12 asks a swapped webfont to carry.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Toolchain — pinned, peer-side, never bundled
|
|
2
|
+
|
|
3
|
+
The package ships no Python and no font tooling. The type-design build runs in
|
|
4
|
+
an isolated environment **in the consumer's tree**, from the exact versions
|
|
5
|
+
below. A version moves only by a pull request that repeats the intake below for
|
|
6
|
+
the new version — never floating, never `latest`.
|
|
7
|
+
|
|
8
|
+
| Role | Package | Pin | License |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| outline library, compiler back end | `fonttools` | `fonttools==4.66.1` | MIT |
|
|
11
|
+
| path booleans (overlap removal) | `skia-pathops` | `skia-pathops==0.9.2` | BSD-3-Clause |
|
|
12
|
+
| UFO source library | `ufoLib2` | `ufoLib2==0.18.1` | Apache-2.0 |
|
|
13
|
+
| font compiler | `fontmake` | `fontmake==3.12.1` | Apache-2.0 |
|
|
14
|
+
| shaping binding (feature checks) | `uharfbuzz` | `uharfbuzz==0.56.2` | Apache-2.0 |
|
|
15
|
+
| raster tracer | `vtracer` | `vtracer==0.6.15` | MIT |
|
|
16
|
+
|
|
17
|
+
Write the pins to `.type-design/pins.txt` in the consumer tree:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
fonttools==4.66.1
|
|
21
|
+
skia-pathops==0.9.2
|
|
22
|
+
ufoLib2==0.18.1
|
|
23
|
+
fontmake==3.12.1
|
|
24
|
+
uharfbuzz==0.56.2
|
|
25
|
+
vtracer==0.6.15
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Create a virtual environment under `.type-design/`, install that file into it
|
|
29
|
+
with the environment's own package installer, and freeze the resolved set to
|
|
30
|
+
`.type-design/pins.lock`.
|
|
31
|
+
|
|
32
|
+
Commit the lock file with the font sources: `fontmake` resolves further packages
|
|
33
|
+
(`ufo2ft`, `glyphsLib`, `fontMath`), and the lock records which ones built this
|
|
34
|
+
font. The raster tracer is MIT-licensed on purpose: a copyleft tracer is not the
|
|
35
|
+
default builder.
|
|
36
|
+
|
|
37
|
+
## Intake record — 2026-10-18
|
|
38
|
+
|
|
39
|
+
Taken through `supply-chain-intake` against the live registry on 2026-10-18.
|
|
40
|
+
The figures below are as that run reported them; the raw registry and OSV
|
|
41
|
+
responses were not stored, so re-query the registry before relying on one.
|
|
42
|
+
|
|
43
|
+
| Pin | Exists | Published | Downloads, last month | Known vulnerabilities |
|
|
44
|
+
|---|---|---|---|---|
|
|
45
|
+
| `fonttools==4.66.1` | yes | 2026-09-29 | 189,260,520 | none |
|
|
46
|
+
| `skia-pathops==0.9.2` | yes | 2026-02-16 | 325,892 | none |
|
|
47
|
+
| `ufoLib2==0.18.1` | yes | 2025-07-10 | 79,359 | none |
|
|
48
|
+
| `fontmake==3.12.1` | yes | 2026-06-02 | 23,711 | none |
|
|
49
|
+
| `uharfbuzz==0.56.2` | yes | 2026-09-21 | 1,509,780 | none |
|
|
50
|
+
| `vtracer==0.6.15` | yes | 2026-03-23 | 477,912 | none |
|
|
51
|
+
|
|
52
|
+
- **Existence and publish date** — the registry's JSON API for each package
|
|
53
|
+
and version; none is yanked.
|
|
54
|
+
- **Age** — each pin is the newest release at least two weeks old on the intake
|
|
55
|
+
date. A newer release existed for `fonttools`, `ufoLib2`, `fontmake` and
|
|
56
|
+
`uharfbuzz` and was passed over for being days old.
|
|
57
|
+
- **Compatibility** — `fontmake==3.12.1` requires `ufoLib2>=0.18.1` and
|
|
58
|
+
`fonttools>=4.59.2`; `ufoLib2==0.18.1` requires `fonttools>=4.58.0`. All six
|
|
59
|
+
need Python 3.11 or newer because `fonttools` does.
|
|
60
|
+
- **Vulnerabilities** — the OSV database returned no advisory for any of the six
|
|
61
|
+
pinned versions. Run `pip-audit` over the frozen lock before the first build;
|
|
62
|
+
the intake covered the six named packages, not what they resolve.
|
|
63
|
+
- **Typo-adjacency** — each registry entry declares its source repository
|
|
64
|
+
(`fonttools/fonttools`, `fonttools/skia-pathops`, `fonttools/ufoLib2`,
|
|
65
|
+
`googlei18n/fontmake`, `trufont/uharfbuzz`, and visioncortex for `vtracer`);
|
|
66
|
+
`potracer` and `pypotrace` were considered for tracing and rejected as GPL.
|