oh-my-customcodex 0.1.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/LICENSE +21 -0
- package/README.md +327 -0
- package/dist/cli/index.js +32054 -0
- package/dist/index.js +5469 -0
- package/package.json +89 -0
- package/templates/.claude/agents/arch-documenter.md +38 -0
- package/templates/.claude/agents/arch-speckit-agent.md +66 -0
- package/templates/.claude/agents/be-django-expert.md +47 -0
- package/templates/.claude/agents/be-express-expert.md +31 -0
- package/templates/.claude/agents/be-fastapi-expert.md +45 -0
- package/templates/.claude/agents/be-go-backend-expert.md +45 -0
- package/templates/.claude/agents/be-nestjs-expert.md +29 -0
- package/templates/.claude/agents/be-springboot-expert.md +42 -0
- package/templates/.claude/agents/db-alembic-expert.md +73 -0
- package/templates/.claude/agents/db-postgres-expert.md +38 -0
- package/templates/.claude/agents/db-redis-expert.md +38 -0
- package/templates/.claude/agents/db-supabase-expert.md +37 -0
- package/templates/.claude/agents/de-airflow-expert.md +48 -0
- package/templates/.claude/agents/de-dbt-expert.md +36 -0
- package/templates/.claude/agents/de-kafka-expert.md +83 -0
- package/templates/.claude/agents/de-pipeline-expert.md +34 -0
- package/templates/.claude/agents/de-snowflake-expert.md +38 -0
- package/templates/.claude/agents/de-spark-expert.md +38 -0
- package/templates/.claude/agents/fe-design-expert.md +120 -0
- package/templates/.claude/agents/fe-flutter-agent.md +48 -0
- package/templates/.claude/agents/fe-svelte-agent.md +33 -0
- package/templates/.claude/agents/fe-vercel-agent.md +40 -0
- package/templates/.claude/agents/fe-vuejs-agent.md +34 -0
- package/templates/.claude/agents/infra-aws-expert.md +49 -0
- package/templates/.claude/agents/infra-docker-expert.md +49 -0
- package/templates/.claude/agents/lang-golang-expert.md +46 -0
- package/templates/.claude/agents/lang-java21-expert.md +42 -0
- package/templates/.claude/agents/lang-kotlin-expert.md +45 -0
- package/templates/.claude/agents/lang-python-expert.md +45 -0
- package/templates/.claude/agents/lang-rust-expert.md +45 -0
- package/templates/.claude/agents/lang-typescript-expert.md +45 -0
- package/templates/.claude/agents/mgr-claude-code-bible.md +62 -0
- package/templates/.claude/agents/mgr-creator.md +57 -0
- package/templates/.claude/agents/mgr-gitnerd.md +50 -0
- package/templates/.claude/agents/mgr-sauron.md +163 -0
- package/templates/.claude/agents/mgr-supplier.md +39 -0
- package/templates/.claude/agents/mgr-updater.md +40 -0
- package/templates/.claude/agents/qa-engineer.md +36 -0
- package/templates/.claude/agents/qa-planner.md +78 -0
- package/templates/.claude/agents/qa-writer.md +32 -0
- package/templates/.claude/agents/sec-codeql-expert.md +56 -0
- package/templates/.claude/agents/slack-cli-expert.md +98 -0
- package/templates/.claude/agents/souls/lang-golang-expert.soul.md +21 -0
- package/templates/.claude/agents/sys-memory-keeper.md +123 -0
- package/templates/.claude/agents/sys-naggy.md +76 -0
- package/templates/.claude/agents/tool-bun-expert.md +26 -0
- package/templates/.claude/agents/tool-npm-expert.md +31 -0
- package/templates/.claude/agents/tool-optimizer.md +37 -0
- package/templates/.claude/agents/wiki-curator.md +72 -0
- package/templates/.claude/config/required-plugins.json +30 -0
- package/templates/.claude/contexts/dev.md +20 -0
- package/templates/.claude/contexts/ecomode.md +110 -0
- package/templates/.claude/contexts/index.yaml +41 -0
- package/templates/.claude/contexts/research.md +28 -0
- package/templates/.claude/contexts/review.md +23 -0
- package/templates/.claude/hooks/hooks.json +533 -0
- package/templates/.claude/hooks/scripts/adaptive-harness-scan.sh +45 -0
- package/templates/.claude/hooks/scripts/agent-start-recorder.sh +40 -0
- package/templates/.claude/hooks/scripts/agent-teams-advisor.sh +76 -0
- package/templates/.claude/hooks/scripts/audit-log.sh +64 -0
- package/templates/.claude/hooks/scripts/auto-continue-guard.sh +33 -0
- package/templates/.claude/hooks/scripts/content-hash-validator.sh +75 -0
- package/templates/.claude/hooks/scripts/context-budget-advisor.sh +107 -0
- package/templates/.claude/hooks/scripts/cost-cap-advisor.sh +71 -0
- package/templates/.claude/hooks/scripts/cwd-change-detector.sh +36 -0
- package/templates/.claude/hooks/scripts/eval-core-batch-save.sh +46 -0
- package/templates/.claude/hooks/scripts/feedback-collector.sh +92 -0
- package/templates/.claude/hooks/scripts/file-change-validator.sh +26 -0
- package/templates/.claude/hooks/scripts/git-delegation-guard.sh +57 -0
- package/templates/.claude/hooks/scripts/model-escalation-advisor.sh +106 -0
- package/templates/.claude/hooks/scripts/omcodex-auto-update.sh +4 -0
- package/templates/.claude/hooks/scripts/omcustom-auto-update.sh +177 -0
- package/templates/.claude/hooks/scripts/rtk-intercept.sh +77 -0
- package/templates/.claude/hooks/scripts/rule-deletion-guard.sh +60 -0
- package/templates/.claude/hooks/scripts/schema-validator.sh +106 -0
- package/templates/.claude/hooks/scripts/secret-filter.sh +100 -0
- package/templates/.claude/hooks/scripts/session-autofix-prompt.sh +34 -0
- package/templates/.claude/hooks/scripts/session-autofix.sh +146 -0
- package/templates/.claude/hooks/scripts/session-env-check.sh +254 -0
- package/templates/.claude/hooks/scripts/skill-extractor-analyzer.sh +49 -0
- package/templates/.claude/hooks/scripts/stage-blocker.sh +16 -0
- package/templates/.claude/hooks/scripts/stale-todo-scanner.sh +91 -0
- package/templates/.claude/hooks/scripts/stall-detection-advisor.sh +112 -0
- package/templates/.claude/hooks/scripts/stop-console-audit.sh +46 -0
- package/templates/.claude/hooks/scripts/stuck-detector.sh +199 -0
- package/templates/.claude/hooks/scripts/task-outcome-recorder.sh +119 -0
- package/templates/.claude/hooks/scripts/task-state-precompact.sh +58 -0
- package/templates/.claude/hooks/scripts/user-prompt-preprocessor.sh +32 -0
- package/templates/.claude/hooks/skill-count-reminder.sh +34 -0
- package/templates/.claude/install-hooks.sh +100 -0
- package/templates/.claude/ontology/agents.yaml +546 -0
- package/templates/.claude/ontology/graphs/agent-skill.json +102 -0
- package/templates/.claude/ontology/graphs/full-graph.json +629 -0
- package/templates/.claude/ontology/graphs/routing.json +112 -0
- package/templates/.claude/ontology/graphs/skill-rule.json +78 -0
- package/templates/.claude/ontology/rules.yaml +251 -0
- package/templates/.claude/ontology/schema.yaml +144 -0
- package/templates/.claude/ontology/skills.yaml +575 -0
- package/templates/.claude/rules/MAY-optimization.md +42 -0
- package/templates/.claude/rules/MUST-agent-design.md +340 -0
- package/templates/.claude/rules/MUST-agent-identification.md +77 -0
- package/templates/.claude/rules/MUST-agent-teams.md +293 -0
- package/templates/.claude/rules/MUST-completion-verification.md +112 -0
- package/templates/.claude/rules/MUST-continuous-improvement.md +69 -0
- package/templates/.claude/rules/MUST-enforcement-policy.md +50 -0
- package/templates/.claude/rules/MUST-intent-transparency.md +74 -0
- package/templates/.claude/rules/MUST-language-policy.md +28 -0
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +399 -0
- package/templates/.claude/rules/MUST-parallel-execution.md +184 -0
- package/templates/.claude/rules/MUST-permissions.md +32 -0
- package/templates/.claude/rules/MUST-safety.md +23 -0
- package/templates/.claude/rules/MUST-sync-verification.md +145 -0
- package/templates/.claude/rules/MUST-tool-identification.md +97 -0
- package/templates/.claude/rules/SHOULD-ecomode.md +123 -0
- package/templates/.claude/rules/SHOULD-error-handling.md +33 -0
- package/templates/.claude/rules/SHOULD-hud-statusline.md +51 -0
- package/templates/.claude/rules/SHOULD-interaction.md +77 -0
- package/templates/.claude/rules/SHOULD-memory-integration.md +371 -0
- package/templates/.claude/rules/SHOULD-ontology-rag-routing.md +49 -0
- package/templates/.claude/rules/SHOULD-wiki-sync.md +73 -0
- package/templates/.claude/rules/index.yaml +141 -0
- package/templates/.claude/schemas/tool-inputs.json +62 -0
- package/templates/.claude/skills/action-validator/SKILL.md +89 -0
- package/templates/.claude/skills/adaptive-harness/SKILL.md +335 -0
- package/templates/.claude/skills/adversarial-review/SKILL.md +80 -0
- package/templates/.claude/skills/agora/SKILL.md +194 -0
- package/templates/.claude/skills/airflow-best-practices/SKILL.md +94 -0
- package/templates/.claude/skills/alembic-best-practices/SKILL.md +295 -0
- package/templates/.claude/skills/ambiguity-gate/SKILL.md +94 -0
- package/templates/.claude/skills/analysis/SKILL.md +223 -0
- package/templates/.claude/skills/audit-agents/SKILL.md +118 -0
- package/templates/.claude/skills/aws-best-practices/SKILL.md +281 -0
- package/templates/.claude/skills/claude-code-bible/SKILL.md +93 -0
- package/templates/.claude/skills/claude-code-bible/scripts/fetch-docs.js +244 -0
- package/templates/.claude/skills/claude-native/SKILL.md +215 -0
- package/templates/.claude/skills/codex-exec/SKILL.md +206 -0
- package/templates/.claude/skills/codex-exec/scripts/codex-wrapper.cjs +430 -0
- package/templates/.claude/skills/create-agent/SKILL.md +94 -0
- package/templates/.claude/skills/cve-triage/SKILL.md +91 -0
- package/templates/.claude/skills/dag-orchestration/SKILL.md +201 -0
- package/templates/.claude/skills/dbt-best-practices/SKILL.md +55 -0
- package/templates/.claude/skills/de-lead-routing/SKILL.md +230 -0
- package/templates/.claude/skills/deep-plan/SKILL.md +344 -0
- package/templates/.claude/skills/deep-verify/SKILL.md +111 -0
- package/templates/.claude/skills/dev-lead-routing/SKILL.md +161 -0
- package/templates/.claude/skills/dev-refactor/SKILL.md +234 -0
- package/templates/.claude/skills/dev-review/SKILL.md +172 -0
- package/templates/.claude/skills/django-best-practices/SKILL.md +334 -0
- package/templates/.claude/skills/docker-best-practices/SKILL.md +276 -0
- package/templates/.claude/skills/evaluator-optimizer/SKILL.md +421 -0
- package/templates/.claude/skills/fastapi-best-practices/SKILL.md +271 -0
- package/templates/.claude/skills/fix-refs/SKILL.md +109 -0
- package/templates/.claude/skills/flutter-best-practices/SKILL.md +325 -0
- package/templates/.claude/skills/gemini-exec/SKILL.md +215 -0
- package/templates/.claude/skills/gemini-exec/scripts/gemini-wrapper.cjs +485 -0
- package/templates/.claude/skills/go-backend-best-practices/SKILL.md +135 -0
- package/templates/.claude/skills/go-best-practices/SKILL.md +204 -0
- package/templates/.claude/skills/hada-scout/SKILL.md +92 -0
- package/templates/.claude/skills/harness-eval/SKILL.md +95 -0
- package/templates/.claude/skills/harness-synthesizer/SKILL.md +145 -0
- package/templates/.claude/skills/help/SKILL.md +127 -0
- package/templates/.claude/skills/idea/SKILL.md +88 -0
- package/templates/.claude/skills/impeccable-design/SKILL.md +173 -0
- package/templates/.claude/skills/intent-detection/SKILL.md +293 -0
- package/templates/.claude/skills/intent-detection/patterns/agent-triggers.yaml +438 -0
- package/templates/.claude/skills/java21-best-practices/SKILL.md +190 -0
- package/templates/.claude/skills/jinja2-prompts/SKILL.md +86 -0
- package/templates/.claude/skills/kafka-best-practices/SKILL.md +53 -0
- package/templates/.claude/skills/kotlin-best-practices/SKILL.md +257 -0
- package/templates/.claude/skills/lists/SKILL.md +80 -0
- package/templates/.claude/skills/memory-management/SKILL.md +196 -0
- package/templates/.claude/skills/memory-recall/SKILL.md +172 -0
- package/templates/.claude/skills/memory-save/SKILL.md +128 -0
- package/templates/.claude/skills/model-escalation/SKILL.md +62 -0
- package/templates/.claude/skills/monitoring-setup/SKILL.md +215 -0
- package/templates/.claude/skills/multi-model-verification/SKILL.md +130 -0
- package/templates/.claude/skills/npm-audit/SKILL.md +74 -0
- package/templates/.claude/skills/npm-publish/SKILL.md +65 -0
- package/templates/.claude/skills/npm-version/SKILL.md +104 -0
- package/templates/.claude/skills/omcodex-auto-improve/SKILL.md +136 -0
- package/templates/.claude/skills/omcodex-feedback/SKILL.md +205 -0
- package/templates/.claude/skills/omcodex-improve-report/SKILL.md +65 -0
- package/templates/.claude/skills/omcodex-loop/SKILL.md +45 -0
- package/templates/.claude/skills/omcodex-release-notes/SKILL.md +117 -0
- package/templates/.claude/skills/omcodex-takeover/SKILL.md +115 -0
- package/templates/.claude/skills/omcodex-web/SKILL.md +95 -0
- package/templates/.claude/skills/optimize-analyze/SKILL.md +57 -0
- package/templates/.claude/skills/optimize-bundle/SKILL.md +69 -0
- package/templates/.claude/skills/optimize-report/SKILL.md +76 -0
- package/templates/.claude/skills/peer-messaging/SKILL.md +59 -0
- package/templates/.claude/skills/pipeline/SKILL.md +103 -0
- package/templates/.claude/skills/pipeline-architecture-patterns/SKILL.md +84 -0
- package/templates/.claude/skills/pipeline-guards/SKILL.md +173 -0
- package/templates/.claude/skills/post-release-followup/SKILL.md +134 -0
- package/templates/.claude/skills/postgres-best-practices/SKILL.md +67 -0
- package/templates/.claude/skills/pr-auto-improve/SKILL.md +129 -0
- package/templates/.claude/skills/professor-triage/SKILL.md +321 -0
- package/templates/.claude/skills/python-best-practices/SKILL.md +223 -0
- package/templates/.claude/skills/qa-lead-routing/SKILL.md +104 -0
- package/templates/.claude/skills/react-best-practices/SKILL.md +102 -0
- package/templates/.claude/skills/reasoning-sandwich/SKILL.md +64 -0
- package/templates/.claude/skills/redis-best-practices/SKILL.md +84 -0
- package/templates/.claude/skills/release-plan/SKILL.md +207 -0
- package/templates/.claude/skills/research/SKILL.md +493 -0
- package/templates/.claude/skills/result-aggregation/SKILL.md +165 -0
- package/templates/.claude/skills/rtk-exec/SKILL.md +199 -0
- package/templates/.claude/skills/rtk-exec/scripts/rtk-wrapper.cjs +377 -0
- package/templates/.claude/skills/rust-best-practices/SKILL.md +268 -0
- package/templates/.claude/skills/sauron-watch/SKILL.md +239 -0
- package/templates/.claude/skills/scout/SKILL.md +250 -0
- package/templates/.claude/skills/sdd/SKILL.md +24 -0
- package/templates/.claude/skills/sdd-dev/SKILL.md +257 -0
- package/templates/.claude/skills/sdd-development/SKILL.md +24 -0
- package/templates/.claude/skills/secretary-routing/SKILL.md +132 -0
- package/templates/.claude/skills/skill-extractor/SKILL.md +155 -0
- package/templates/.claude/skills/skills-sh-search/SKILL.md +210 -0
- package/templates/.claude/skills/snowflake-best-practices/SKILL.md +66 -0
- package/templates/.claude/skills/spark-best-practices/SKILL.md +53 -0
- package/templates/.claude/skills/springboot-best-practices/SKILL.md +74 -0
- package/templates/.claude/skills/springboot-best-practices/examples/config-properties-example.java +22 -0
- package/templates/.claude/skills/springboot-best-practices/examples/controller-example.java +28 -0
- package/templates/.claude/skills/springboot-best-practices/examples/controller-test-example.java +33 -0
- package/templates/.claude/skills/springboot-best-practices/examples/entity-example.java +22 -0
- package/templates/.claude/skills/springboot-best-practices/examples/exception-handler-example.java +30 -0
- package/templates/.claude/skills/springboot-best-practices/examples/repository-example.java +17 -0
- package/templates/.claude/skills/springboot-best-practices/examples/repository-test-example.java +23 -0
- package/templates/.claude/skills/springboot-best-practices/examples/security-config-example.java +27 -0
- package/templates/.claude/skills/springboot-best-practices/examples/service-example.java +33 -0
- package/templates/.claude/skills/status/SKILL.md +155 -0
- package/templates/.claude/skills/structured-dev-cycle/SKILL.md +200 -0
- package/templates/.claude/skills/stuck-recovery/SKILL.md +80 -0
- package/templates/.claude/skills/supabase-postgres-best-practices/SKILL.md +100 -0
- package/templates/.claude/skills/systematic-debugging/SKILL.md +288 -0
- package/templates/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +278 -0
- package/templates/.claude/skills/systematic-debugging/condition-based-waiting.md +240 -0
- package/templates/.claude/skills/systematic-debugging/defense-in-depth.md +252 -0
- package/templates/.claude/skills/systematic-debugging/find-polluter.sh +147 -0
- package/templates/.claude/skills/systematic-debugging/root-cause-tracing.md +87 -0
- package/templates/.claude/skills/task-decomposition/SKILL.md +197 -0
- package/templates/.claude/skills/typescript-best-practices/SKILL.md +322 -0
- package/templates/.claude/skills/update-docs/SKILL.md +142 -0
- package/templates/.claude/skills/update-external/SKILL.md +169 -0
- package/templates/.claude/skills/vercel-deploy/SKILL.md +75 -0
- package/templates/.claude/skills/web-design-guidelines/SKILL.md +119 -0
- package/templates/.claude/skills/wiki/SKILL.md +426 -0
- package/templates/.claude/skills/wiki-rag/SKILL.md +154 -0
- package/templates/.claude/skills/worker-reviewer-pipeline/SKILL.md +165 -0
- package/templates/.claude/skills/writing-clearly-and-concisely/SKILL.md +66 -0
- package/templates/.claude/statusline.sh +380 -0
- package/templates/.claude/uninstall-hooks.sh +52 -0
- package/templates/.github/workflows/wiki-sync.yml +132 -0
- package/templates/AGENTS.md.en +255 -0
- package/templates/AGENTS.md.ko +255 -0
- package/templates/CLAUDE.md +263 -0
- package/templates/CLAUDE.md.en +256 -0
- package/templates/CLAUDE.md.ko +256 -0
- package/templates/deprecated-files.json +10 -0
- package/templates/guides/agents-md-quality/README.md +110 -0
- package/templates/guides/airflow/README.md +47 -0
- package/templates/guides/alembic/README.md +438 -0
- package/templates/guides/aws/common-patterns.md +169 -0
- package/templates/guides/aws/index.yaml +26 -0
- package/templates/guides/aws/well-architected.md +143 -0
- package/templates/guides/cc-token-saver/README.md +97 -0
- package/templates/guides/claude-code/01-overview.md +42 -0
- package/templates/guides/claude-code/03-tools.md +107 -0
- package/templates/guides/claude-code/04-agent-skills.md +90 -0
- package/templates/guides/claude-code/05-agent-sdk.md +129 -0
- package/templates/guides/claude-code/06-mcp.md +165 -0
- package/templates/guides/claude-code/07-prompt-engineering.md +100 -0
- package/templates/guides/claude-code/08-testing.md +56 -0
- package/templates/guides/claude-code/09-guardrails.md +78 -0
- package/templates/guides/claude-code/10-monitoring.md +87 -0
- package/templates/guides/claude-code/11-sub-agents.md +159 -0
- package/templates/guides/claude-code/12-workflow-patterns.md +182 -0
- package/templates/guides/claude-code/13-cli-flags.md +151 -0
- package/templates/guides/claude-code/index.yaml +61 -0
- package/templates/guides/dbt/README.md +32 -0
- package/templates/guides/django-best-practices/README.md +476 -0
- package/templates/guides/docker/compose-best-practices.md +284 -0
- package/templates/guides/docker/dockerfile-best-practices.md +262 -0
- package/templates/guides/docker/index.yaml +26 -0
- package/templates/guides/drizzle-orm/README.md +69 -0
- package/templates/guides/elements-of-style/elements-of-style.html +2609 -0
- package/templates/guides/fastapi/best-practices.md +232 -0
- package/templates/guides/fastapi/index.yaml +21 -0
- package/templates/guides/flutter/architecture.md +141 -0
- package/templates/guides/flutter/fundamentals.md +119 -0
- package/templates/guides/flutter/index.yaml +44 -0
- package/templates/guides/flutter/performance.md +119 -0
- package/templates/guides/flutter/security.md +120 -0
- package/templates/guides/flutter/state-management.md +144 -0
- package/templates/guides/flutter/testing.md +155 -0
- package/templates/guides/git-worktree-workflow/README.md +138 -0
- package/templates/guides/go-backend/index.yaml +26 -0
- package/templates/guides/go-backend/project-layout.md +243 -0
- package/templates/guides/go-backend/uber-style.md +212 -0
- package/templates/guides/golang/concurrency.md +282 -0
- package/templates/guides/golang/effective-go.md +309 -0
- package/templates/guides/golang/error-handling.md +250 -0
- package/templates/guides/golang/index.yaml +27 -0
- package/templates/guides/hook-data-flow/README.md +135 -0
- package/templates/guides/iceberg/README.md +49 -0
- package/templates/guides/impeccable-design/color-and-contrast.md +278 -0
- package/templates/guides/impeccable-design/index.yaml +12 -0
- package/templates/guides/impeccable-design/motion-design.md +390 -0
- package/templates/guides/impeccable-design/typography.md +386 -0
- package/templates/guides/impeccable-design/ux-writing.md +400 -0
- package/templates/guides/index.yaml +265 -0
- package/templates/guides/java21/index.yaml +29 -0
- package/templates/guides/java21/java-style-guide.md +248 -0
- package/templates/guides/java21/modern-java21.md +303 -0
- package/templates/guides/kafka/README.md +32 -0
- package/templates/guides/kotlin/coding-conventions.md +247 -0
- package/templates/guides/kotlin/idioms.md +234 -0
- package/templates/guides/kotlin/index.yaml +26 -0
- package/templates/guides/multi-model-routing/README.md +101 -0
- package/templates/guides/multi-provider-exec/README.md +83 -0
- package/templates/guides/postgres/README.md +58 -0
- package/templates/guides/python/index.yaml +26 -0
- package/templates/guides/python/pep8-style-guide.md +202 -0
- package/templates/guides/python/zen-of-python.md +79 -0
- package/templates/guides/redis/README.md +50 -0
- package/templates/guides/rust/error-handling.md +262 -0
- package/templates/guides/rust/index.yaml +26 -0
- package/templates/guides/rust/ownership.md +180 -0
- package/templates/guides/skill-bundle-design/README.md +106 -0
- package/templates/guides/slack-cli/README.md +145 -0
- package/templates/guides/snowflake/README.md +32 -0
- package/templates/guides/spark/README.md +32 -0
- package/templates/guides/springboot/best-practices.md +361 -0
- package/templates/guides/springboot/index.yaml +22 -0
- package/templates/guides/supabase-postgres/README.md +32 -0
- package/templates/guides/supabase-postgres/index.yaml +19 -0
- package/templates/guides/typescript/advanced-types.md +225 -0
- package/templates/guides/typescript/index.yaml +26 -0
- package/templates/guides/typescript/type-system.md +219 -0
- package/templates/guides/web-design/accessibility.md +66 -0
- package/templates/guides/web-design/index.yaml +20 -0
- package/templates/guides/web-design/performance.md +102 -0
- package/templates/guides/web-scraping/README.md +926 -0
- package/templates/guides/web-scraping/index.yaml +19 -0
- package/templates/guides/worktree-lifecycle/README.md +104 -0
- package/templates/index.yaml +18 -0
- package/templates/manifest.json +49 -0
- package/templates/workflows/auto-dev.yaml +46 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# Typography
|
|
2
|
+
|
|
3
|
+
> Reference: Impeccable Design Language — https://github.com/pbakaus/impeccable (Apache 2.0)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Vertical Rhythm
|
|
8
|
+
|
|
9
|
+
Vertical rhythm creates visual consistency by spacing elements to a shared baseline grid. The line-height value serves as the foundational unit — every spacing decision derives from it.
|
|
10
|
+
|
|
11
|
+
### Base unit: 24px
|
|
12
|
+
|
|
13
|
+
A `line-height` of `1.5` on a `16px` base body font yields a 24px rhythm unit. All vertical spacing — margins, paddings, gaps — should be multiples of this unit.
|
|
14
|
+
|
|
15
|
+
```css
|
|
16
|
+
:root {
|
|
17
|
+
--rhythm: 1.5rem; /* 24px at 16px base */
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
p {
|
|
21
|
+
margin-bottom: var(--rhythm);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
h2 {
|
|
25
|
+
margin-top: calc(var(--rhythm) * 2);
|
|
26
|
+
margin-bottom: var(--rhythm);
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Why rhythm matters
|
|
31
|
+
|
|
32
|
+
- Readers subconsciously detect grid regularity; violations create unease
|
|
33
|
+
- Rhythm aligns multi-column layouts at matching baselines
|
|
34
|
+
- It simplifies spacing decisions: everything is a multiple, never an arbitrary pixel value
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Modular Scale
|
|
39
|
+
|
|
40
|
+
A modular scale is a sequence of font sizes derived from a ratio. Using a consistent ratio ensures every size feels intentional and related.
|
|
41
|
+
|
|
42
|
+
### Type scale (rem)
|
|
43
|
+
|
|
44
|
+
| Token | rem | px (at 16px) | Use |
|
|
45
|
+
|-------|-----|--------------|-----|
|
|
46
|
+
| `xs` | 0.75rem | 12px | Labels, captions, legal |
|
|
47
|
+
| `sm` | 0.875rem | 14px | Secondary text, metadata |
|
|
48
|
+
| `base` | 1rem | 16px | Body copy |
|
|
49
|
+
| `lg` | 1.25rem | 20px | Large body, intro paragraphs |
|
|
50
|
+
| `xl` | 1.5rem | 24px | Small headings (h4, h5) |
|
|
51
|
+
| `2xl` | 2rem | 32px | Section headings (h3) |
|
|
52
|
+
| `3xl` | 2.5rem | 40px | Page headings (h2) |
|
|
53
|
+
| `4xl` | 3rem | 48px | Hero headings (h1) |
|
|
54
|
+
| `5xl` | 4rem | 64px | Display, marketing |
|
|
55
|
+
|
|
56
|
+
### Common ratios
|
|
57
|
+
|
|
58
|
+
| Name | Ratio | Character |
|
|
59
|
+
|------|-------|-----------|
|
|
60
|
+
| Major third | 1.25 | Compact, UI-appropriate |
|
|
61
|
+
| Perfect fourth | 1.333 | Balanced, most versatile |
|
|
62
|
+
| Perfect fifth | 1.5 | Dramatic, large headings |
|
|
63
|
+
|
|
64
|
+
For dense UIs (dashboards, data tables), prefer major third (1.25). For editorial and marketing pages, perfect fourth or fifth creates more visual contrast.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Measure and Readability
|
|
69
|
+
|
|
70
|
+
**Measure** is the character count per line. Optimal reading requires a constrained line length.
|
|
71
|
+
|
|
72
|
+
### Optimal range
|
|
73
|
+
|
|
74
|
+
- Body text: 55–75 characters per line (use `ch` units)
|
|
75
|
+
- Narrow columns (sidebars, captions): 40–50ch
|
|
76
|
+
- Maximum: 80ch — beyond this, readers lose their place
|
|
77
|
+
|
|
78
|
+
```css
|
|
79
|
+
.prose {
|
|
80
|
+
max-width: 65ch;
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Inverse relationship: line-height and line-length
|
|
85
|
+
|
|
86
|
+
Longer lines require taller line-height to help the eye track from end to start. Shorter lines tolerate tighter spacing.
|
|
87
|
+
|
|
88
|
+
| Line length | Recommended line-height |
|
|
89
|
+
|-------------|------------------------|
|
|
90
|
+
| 40–50ch | 1.3–1.4 |
|
|
91
|
+
| 55–65ch | 1.5–1.6 |
|
|
92
|
+
| 65–80ch | 1.6–1.7 |
|
|
93
|
+
|
|
94
|
+
### Dark mode adjustment
|
|
95
|
+
|
|
96
|
+
Light text on dark backgrounds appears to bleed optically, compressing perceived spacing. Add 0.05–0.1 to your line-height in dark mode:
|
|
97
|
+
|
|
98
|
+
```css
|
|
99
|
+
@media (prefers-color-scheme: dark) {
|
|
100
|
+
body {
|
|
101
|
+
line-height: 1.65; /* was 1.5 in light mode */
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Font Selection
|
|
109
|
+
|
|
110
|
+
### Avoid overused fonts
|
|
111
|
+
|
|
112
|
+
These fonts are technically excellent but so ubiquitous that they signal "default" rather than considered design:
|
|
113
|
+
|
|
114
|
+
- Inter
|
|
115
|
+
- Roboto
|
|
116
|
+
- Open Sans
|
|
117
|
+
- Lato
|
|
118
|
+
- Montserrat
|
|
119
|
+
|
|
120
|
+
### Recommended alternatives (Google Fonts / free)
|
|
121
|
+
|
|
122
|
+
| Font | Character | Best for |
|
|
123
|
+
|------|-----------|----------|
|
|
124
|
+
| Instrument Sans | Clean, modern humanist | SaaS products, dashboards |
|
|
125
|
+
| Plus Jakarta Sans | Friendly, geometric | Consumer apps |
|
|
126
|
+
| Outfit | Geometric, tech-forward | AI and developer tools |
|
|
127
|
+
| Onest | Legible, neutral | Data-dense interfaces |
|
|
128
|
+
| Figtree | Rounded, approachable | Consumer-facing products |
|
|
129
|
+
| Urbanist | Minimal, spacious | Design-forward marketing |
|
|
130
|
+
| Source Sans 3 | Workhorse, wide language support | Internationalizable products |
|
|
131
|
+
| Nunito Sans | Warm, rounded | Educational, onboarding |
|
|
132
|
+
| DM Sans | Crisp, professional | B2B SaaS |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Font Pairing
|
|
137
|
+
|
|
138
|
+
### One family, varied weights (preferred)
|
|
139
|
+
|
|
140
|
+
Using one versatile family with Light (300), Regular (400), Medium (500), Semibold (600), and Bold (700) weights avoids the cognitive load of managing two typefaces. The weight contrast alone provides sufficient hierarchy.
|
|
141
|
+
|
|
142
|
+
```css
|
|
143
|
+
:root {
|
|
144
|
+
--font-body: 'Instrument Sans', sans-serif;
|
|
145
|
+
/* No secondary font needed */
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
h1 { font-weight: 700; }
|
|
149
|
+
h2 { font-weight: 600; }
|
|
150
|
+
body { font-weight: 400; }
|
|
151
|
+
.label { font-weight: 500; }
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### When to use two families
|
|
155
|
+
|
|
156
|
+
Only add a second typeface when you need to distinguish structurally different content — for example, a serif for editorial body copy and a sans-serif for UI chrome. Mixing two sans-serifs rarely adds value.
|
|
157
|
+
|
|
158
|
+
### Pairing rules
|
|
159
|
+
|
|
160
|
+
- Never mix two geometric sans-serifs (e.g., Outfit + Montserrat) — too similar
|
|
161
|
+
- Pair by contrast: geometric + humanist, serif + sans-serif
|
|
162
|
+
- Keep the secondary typeface to one weight if possible
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Web Font Loading
|
|
167
|
+
|
|
168
|
+
Poor font loading causes layout shift and flash of unstyled text. Apply all three techniques together.
|
|
169
|
+
|
|
170
|
+
### font-display: swap
|
|
171
|
+
|
|
172
|
+
```css
|
|
173
|
+
@font-face {
|
|
174
|
+
font-family: 'Instrument Sans';
|
|
175
|
+
src: url('/fonts/instrument-sans.woff2') format('woff2');
|
|
176
|
+
font-display: swap;
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
`swap` renders immediately with fallback, then swaps in the loaded font. Preferred for body text.
|
|
181
|
+
|
|
182
|
+
### size-adjust
|
|
183
|
+
|
|
184
|
+
Adjust the fallback font's scale to match the web font's metrics, reducing layout shift when the swap occurs:
|
|
185
|
+
|
|
186
|
+
```css
|
|
187
|
+
@font-face {
|
|
188
|
+
font-family: 'Instrument Sans Fallback';
|
|
189
|
+
src: local('Arial');
|
|
190
|
+
size-adjust: 104%; /* match cap-height of Instrument Sans */
|
|
191
|
+
ascent-override: 90%;
|
|
192
|
+
descent-override: 25%;
|
|
193
|
+
line-gap-override: 0%;
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Fontaine (automated fallback generation)
|
|
198
|
+
|
|
199
|
+
The [Fontaine](https://github.com/unjs/fontaine) library automatically generates accurate fallback metrics for common web fonts. Use it in Vite/Nuxt/Next.js build pipelines to eliminate manual metric calculation.
|
|
200
|
+
|
|
201
|
+
```js
|
|
202
|
+
// vite.config.ts
|
|
203
|
+
import { fontaine } from 'vite-plugin-fontaine'
|
|
204
|
+
|
|
205
|
+
export default {
|
|
206
|
+
plugins: [fontaine()]
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Preloading critical fonts
|
|
211
|
+
|
|
212
|
+
Preload the font file for your primary body weight to eliminate FOUT on first paint:
|
|
213
|
+
|
|
214
|
+
```html
|
|
215
|
+
<link rel="preload" href="/fonts/instrument-sans-400.woff2" as="font" type="font/woff2" crossorigin>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Fluid Typography
|
|
221
|
+
|
|
222
|
+
Fluid typography scales smoothly between a minimum and maximum size across a viewport range, replacing breakpoint-based font size overrides.
|
|
223
|
+
|
|
224
|
+
### clamp() syntax
|
|
225
|
+
|
|
226
|
+
```css
|
|
227
|
+
font-size: clamp(min, preferred, max);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
- `min`: smallest size (used below the lower viewport bound)
|
|
231
|
+
- `preferred`: `vw`-based interpolation expression
|
|
232
|
+
- `max`: largest size (used above the upper viewport bound)
|
|
233
|
+
|
|
234
|
+
### Heading example
|
|
235
|
+
|
|
236
|
+
```css
|
|
237
|
+
h1 {
|
|
238
|
+
/* Scales from 2rem at 320px viewport to 4rem at 1280px viewport */
|
|
239
|
+
font-size: clamp(2rem, 1.25rem + 3.75vw, 4rem);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
h2 {
|
|
243
|
+
font-size: clamp(1.5rem, 1rem + 2.5vw, 2.5rem);
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### When NOT to use fluid type
|
|
248
|
+
|
|
249
|
+
For data-dense UIs — tables, forms, dashboards, code editors — fixed `rem` values are preferable. Fluid scaling in data contexts can create unexpected layout shifts and misalignment.
|
|
250
|
+
|
|
251
|
+
### Generating clamp values
|
|
252
|
+
|
|
253
|
+
Use [Utopia.fyi](https://utopia.fyi/) to generate a complete fluid type scale with mathematically correct clamp values for any scale ratio and viewport range.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## OpenType Features
|
|
258
|
+
|
|
259
|
+
OpenType features improve readability and professional finish in specific contexts. Apply via `font-variant-*` or `font-feature-settings`.
|
|
260
|
+
|
|
261
|
+
### Tabular numbers (critical for data UIs)
|
|
262
|
+
|
|
263
|
+
Ensures all digits are the same width, preventing column misalignment in tables and dashboards:
|
|
264
|
+
|
|
265
|
+
```css
|
|
266
|
+
.metric, td, .price {
|
|
267
|
+
font-variant-numeric: tabular-nums;
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Diagonal fractions
|
|
272
|
+
|
|
273
|
+
Renders `1/2` as a proper fraction glyph rather than three separate characters:
|
|
274
|
+
|
|
275
|
+
```css
|
|
276
|
+
.fraction {
|
|
277
|
+
font-variant-numeric: diagonal-fractions;
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Small caps
|
|
282
|
+
|
|
283
|
+
Avoids the "shouting" effect of all-caps labels while maintaining visual differentiation:
|
|
284
|
+
|
|
285
|
+
```css
|
|
286
|
+
.label-caps {
|
|
287
|
+
font-variant-caps: all-small-caps;
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Disable ligatures in code
|
|
292
|
+
|
|
293
|
+
Ligatures in code fonts (like `fi`, `fl`, or code-specific `=>` ligatures) can confuse readers who need to see exact characters:
|
|
294
|
+
|
|
295
|
+
```css
|
|
296
|
+
code, pre, .monospace {
|
|
297
|
+
font-variant-ligatures: none;
|
|
298
|
+
/* or explicitly: */
|
|
299
|
+
font-feature-settings: 'liga' 0, 'calt' 0;
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Design Tokens
|
|
306
|
+
|
|
307
|
+
Use semantic token names that describe purpose, never raw values. This enables theming, dark mode, and systematic changes.
|
|
308
|
+
|
|
309
|
+
### Token naming pattern
|
|
310
|
+
|
|
311
|
+
```css
|
|
312
|
+
:root {
|
|
313
|
+
/* Semantic: describes purpose */
|
|
314
|
+
--text-body: oklch(25% 0.01 250);
|
|
315
|
+
--text-heading: oklch(15% 0.01 250);
|
|
316
|
+
--text-muted: oklch(50% 0.01 250);
|
|
317
|
+
--text-disabled: oklch(65% 0.01 250);
|
|
318
|
+
--text-inverse: oklch(98% 0.01 250);
|
|
319
|
+
--text-link: oklch(50% 0.15 250);
|
|
320
|
+
--text-danger: oklch(45% 0.2 25);
|
|
321
|
+
--text-success: oklch(40% 0.15 145);
|
|
322
|
+
|
|
323
|
+
/* Size tokens */
|
|
324
|
+
--text-xs: 0.75rem;
|
|
325
|
+
--text-sm: 0.875rem;
|
|
326
|
+
--text-base: 1rem;
|
|
327
|
+
--text-lg: 1.25rem;
|
|
328
|
+
--text-xl: 1.5rem;
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### Anti-patterns
|
|
333
|
+
|
|
334
|
+
```css
|
|
335
|
+
/* WRONG: value-based names break when values change */
|
|
336
|
+
--text-gray-500: #6b7280;
|
|
337
|
+
--font-16: 16px;
|
|
338
|
+
|
|
339
|
+
/* CORRECT: semantic names survive redesigns */
|
|
340
|
+
--text-body: oklch(45% 0.01 250);
|
|
341
|
+
--text-base: 1rem;
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Accessibility
|
|
347
|
+
|
|
348
|
+
Typography accessibility ensures content is readable by users with visual impairments and those who rely on zoom or assistive technology.
|
|
349
|
+
|
|
350
|
+
### Preserve zoom
|
|
351
|
+
|
|
352
|
+
Never disable text scaling. Use `rem` and `em` for all font sizes — never `px` for body text:
|
|
353
|
+
|
|
354
|
+
```css
|
|
355
|
+
/* WRONG: fixed pixels block zoom */
|
|
356
|
+
body { font-size: 14px; }
|
|
357
|
+
|
|
358
|
+
/* CORRECT: scales with user preferences */
|
|
359
|
+
body { font-size: 1rem; }
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### Minimum sizes
|
|
363
|
+
|
|
364
|
+
| Element | Minimum |
|
|
365
|
+
|---------|---------|
|
|
366
|
+
| Body text | 16px (1rem) |
|
|
367
|
+
| Secondary/caption | 12px (0.75rem) minimum, 14px preferred |
|
|
368
|
+
| Touch targets | 44px × 44px minimum (not typography, but related to readability) |
|
|
369
|
+
|
|
370
|
+
### Zoom testing
|
|
371
|
+
|
|
372
|
+
Test at 200% and 400% browser zoom. Text should reflow, not overflow, at all zoom levels. Use `overflow-wrap: break-word` and `min-width: 0` on flex/grid children to prevent overflow.
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## Anti-Patterns
|
|
377
|
+
|
|
378
|
+
| Anti-pattern | Problem | Fix |
|
|
379
|
+
|--------------|---------|-----|
|
|
380
|
+
| More than 2–3 font families | Visual noise, slow loading, hard to maintain | Use weight variation within one family |
|
|
381
|
+
| Missing fallback stack | FOUT causes layout shift, bad UX in poor connections | Always include system fallbacks |
|
|
382
|
+
| Decorative fonts for body copy | Fatigue, poor legibility at small sizes | Decorative fonts for headings only |
|
|
383
|
+
| Pixel-based font sizes | Breaks user zoom preference, accessibility fail | Use rem/em |
|
|
384
|
+
| Line-height below 1.4 for body | Eye-strain, poor legibility | 1.5–1.6 for body, never below 1.3 |
|
|
385
|
+
| No type scale system | Arbitrary sizes, inconsistent hierarchy | Commit to a modular scale |
|
|
386
|
+
| Ignoring letter-spacing | Tight tracking at large sizes, loose at small | `letter-spacing: -0.02em` for headings, default for body |
|