@monoes/monomindcli 1.14.7 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/reengineer-squad/boss.md +113 -0
- package/.claude/agents/reengineer-squad/critic-architect.md +132 -0
- package/.claude/agents/reengineer-squad/git-manager.md +145 -0
- package/.claude/agents/reengineer-squad/idea-generator.md +95 -0
- package/.claude/agents/reengineer-squad/implementer.md +112 -0
- package/.claude/agents/reengineer-squad/integration-planner.md +112 -0
- package/.claude/agents/reengineer-squad/source-analyst.md +103 -0
- package/.claude/agents/reengineer-squad/target-analyst.md +118 -0
- package/.claude/agents/reengineer-squad/tester.md +105 -0
- package/.claude/commands/mastermind/master.md +35 -14
- package/.claude/helpers/handlers/capture-handler.cjs +155 -18
- package/.claude/helpers/monolean-activate.cjs +20 -0
- package/.claude/helpers/monolean-config.cjs +76 -0
- package/.claude/helpers/monolean-instructions.cjs +109 -0
- package/.claude/helpers/monolean-propagate.cjs +9 -0
- package/.claude/helpers/monolean-tracker.cjs +18 -0
- package/.claude/helpers/skill-registry.json +2 -2
- package/.claude/skills/agent-browser-testing/SKILL.md +301 -18
- package/.claude/skills/mastermind/runorg.md +69 -23
- package/.claude/skills/monodesign/SKILL.md +32 -1
- package/.claude/skills/monodesign/adapt.md +53 -0
- package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +100 -0
- package/.claude/skills/monodesign/animate.md +65 -0
- package/.claude/skills/monodesign/audit.md +89 -0
- package/.claude/skills/monodesign/bolder.md +50 -0
- package/.claude/skills/monodesign/clarify.md +64 -0
- package/.claude/skills/monodesign/colorize.md +68 -0
- package/.claude/skills/monodesign/craft.md +51 -0
- package/.claude/skills/monodesign/critique.md +66 -0
- package/.claude/skills/monodesign/delight.md +47 -0
- package/.claude/skills/monodesign/distill.md +56 -0
- package/.claude/skills/monodesign/document.md +80 -0
- package/.claude/skills/monodesign/extract.md +74 -0
- package/.claude/skills/monodesign/harden.md +65 -0
- package/.claude/skills/monodesign/live.md +59 -0
- package/.claude/skills/monodesign/onboard.md +50 -0
- package/.claude/skills/monodesign/optimize.md +64 -0
- package/.claude/skills/monodesign/overdrive.md +56 -0
- package/.claude/skills/monodesign/polish.md +68 -0
- package/.claude/skills/monodesign/quieter.md +57 -0
- package/.claude/skills/monodesign/reference/antipatterns-catalog.md +248 -76
- package/.claude/skills/monodesign/reference/codex.md +107 -0
- package/.claude/skills/monodesign/reference/craft.md +3 -0
- package/.claude/skills/monodesign/reference/hooks.md +99 -0
- package/.claude/skills/monodesign/reference/image-prompts.md +12 -0
- package/.claude/skills/monodesign/shape.md +71 -0
- package/.claude/skills/monodesign/teach.md +69 -0
- package/.claude/skills/monodesign/typeset.md +59 -0
- package/.claude/skills/monolean/SKILL.md +118 -0
- package/.claude/skills/monolean-audit/SKILL.md +41 -0
- package/.claude/skills/monolean-debt/SKILL.md +46 -0
- package/.claude/skills/monolean-help/SKILL.md +60 -0
- package/.claude/skills/monolean-review/SKILL.md +57 -0
- package/bin/cli.js +3 -1
- package/dist/dashboard/server.js +137 -0
- package/dist/src/__tests__/browse-adapters.test.d.ts +2 -0
- package/dist/src/__tests__/browse-adapters.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-adapters.test.js +51 -0
- package/dist/src/__tests__/browse-adapters.test.js.map +1 -0
- package/dist/src/__tests__/browse-analyzer.test.d.ts +2 -0
- package/dist/src/__tests__/browse-analyzer.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-analyzer.test.js +68 -0
- package/dist/src/__tests__/browse-analyzer.test.js.map +1 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.d.ts +2 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.js +139 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.js.map +1 -0
- package/dist/src/__tests__/browse-cdp.test.d.ts +2 -0
- package/dist/src/__tests__/browse-cdp.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-cdp.test.js +169 -0
- package/dist/src/__tests__/browse-cdp.test.js.map +1 -0
- package/dist/src/__tests__/browse-dashboard.test.d.ts +2 -0
- package/dist/src/__tests__/browse-dashboard.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-dashboard.test.js +179 -0
- package/dist/src/__tests__/browse-dashboard.test.js.map +1 -0
- package/dist/src/__tests__/browse-engine.test.d.ts +2 -0
- package/dist/src/__tests__/browse-engine.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-engine.test.js +122 -0
- package/dist/src/__tests__/browse-engine.test.js.map +1 -0
- package/dist/src/__tests__/browse-expression.test.d.ts +2 -0
- package/dist/src/__tests__/browse-expression.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-expression.test.js +54 -0
- package/dist/src/__tests__/browse-expression.test.js.map +1 -0
- package/dist/src/__tests__/browse-store.test.d.ts +2 -0
- package/dist/src/__tests__/browse-store.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-store.test.js +99 -0
- package/dist/src/__tests__/browse-store.test.js.map +1 -0
- package/dist/src/__tests__/browse-workflow-types.test.d.ts +2 -0
- package/dist/src/__tests__/browse-workflow-types.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-workflow-types.test.js +33 -0
- package/dist/src/__tests__/browse-workflow-types.test.js.map +1 -0
- package/dist/src/browser/action-builder/analyzer.d.ts +11 -0
- package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -0
- package/dist/src/browser/action-builder/analyzer.js +71 -0
- package/dist/src/browser/action-builder/analyzer.js.map +1 -0
- package/dist/src/browser/action-builder/types.d.ts +47 -0
- package/dist/src/browser/action-builder/types.d.ts.map +1 -0
- package/dist/src/browser/action-builder/types.js +2 -0
- package/dist/src/browser/action-builder/types.js.map +1 -0
- package/dist/src/browser/adapters/gemini.d.ts +3 -0
- package/dist/src/browser/adapters/gemini.d.ts.map +1 -0
- package/dist/src/browser/adapters/gemini.js +16 -0
- package/dist/src/browser/adapters/gemini.js.map +1 -0
- package/dist/src/browser/adapters/google.d.ts +3 -0
- package/dist/src/browser/adapters/google.d.ts.map +1 -0
- package/dist/src/browser/adapters/google.js +17 -0
- package/dist/src/browser/adapters/google.js.map +1 -0
- package/dist/src/browser/adapters/index.d.ts +19 -0
- package/dist/src/browser/adapters/index.d.ts.map +1 -0
- package/dist/src/browser/adapters/index.js +23 -0
- package/dist/src/browser/adapters/index.js.map +1 -0
- package/dist/src/browser/adapters/instagram.d.ts +3 -0
- package/dist/src/browser/adapters/instagram.d.ts.map +1 -0
- package/dist/src/browser/adapters/instagram.js +17 -0
- package/dist/src/browser/adapters/instagram.js.map +1 -0
- package/dist/src/browser/adapters/linkedin.d.ts +3 -0
- package/dist/src/browser/adapters/linkedin.d.ts.map +1 -0
- package/dist/src/browser/adapters/linkedin.js +19 -0
- package/dist/src/browser/adapters/linkedin.js.map +1 -0
- package/dist/src/browser/adapters/microsoft.d.ts +3 -0
- package/dist/src/browser/adapters/microsoft.d.ts.map +1 -0
- package/dist/src/browser/adapters/microsoft.js +16 -0
- package/dist/src/browser/adapters/microsoft.js.map +1 -0
- package/dist/src/browser/adapters/x.d.ts +3 -0
- package/dist/src/browser/adapters/x.d.ts.map +1 -0
- package/dist/src/browser/adapters/x.js +19 -0
- package/dist/src/browser/adapters/x.js.map +1 -0
- package/dist/src/browser/dashboard/api-types.d.ts +50 -0
- package/dist/src/browser/dashboard/api-types.d.ts.map +1 -0
- package/dist/src/browser/dashboard/api-types.js +14 -0
- package/dist/src/browser/dashboard/api-types.js.map +1 -0
- package/dist/src/browser/dashboard/server.d.ts +9 -0
- package/dist/src/browser/dashboard/server.d.ts.map +1 -0
- package/dist/src/browser/dashboard/server.js +62 -0
- package/dist/src/browser/dashboard/server.js.map +1 -0
- package/dist/src/browser/dashboard/ui.html +1811 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts +3 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts.map +1 -0
- package/dist/src/browser/workflow/builtin-handlers.js +343 -0
- package/dist/src/browser/workflow/builtin-handlers.js.map +1 -0
- package/dist/src/browser/workflow/engine.d.ts +15 -0
- package/dist/src/browser/workflow/engine.d.ts.map +1 -0
- package/dist/src/browser/workflow/engine.js +127 -0
- package/dist/src/browser/workflow/engine.js.map +1 -0
- package/dist/src/browser/workflow/expression.d.ts +4 -0
- package/dist/src/browser/workflow/expression.d.ts.map +1 -0
- package/dist/src/browser/workflow/expression.js +64 -0
- package/dist/src/browser/workflow/expression.js.map +1 -0
- package/dist/src/browser/workflow/store.d.ts +24 -0
- package/dist/src/browser/workflow/store.d.ts.map +1 -0
- package/dist/src/browser/workflow/store.js +145 -0
- package/dist/src/browser/workflow/store.js.map +1 -0
- package/dist/src/browser/workflow/types.d.ts +48 -0
- package/dist/src/browser/workflow/types.d.ts.map +1 -0
- package/dist/src/browser/workflow/types.js +2 -0
- package/dist/src/browser/workflow/types.js.map +1 -0
- package/dist/src/commands/browse-action.d.ts +4 -0
- package/dist/src/commands/browse-action.d.ts.map +1 -0
- package/dist/src/commands/browse-action.js +151 -0
- package/dist/src/commands/browse-action.js.map +1 -0
- package/dist/src/commands/browse-platform.d.ts +4 -0
- package/dist/src/commands/browse-platform.d.ts.map +1 -0
- package/dist/src/commands/browse-platform.js +117 -0
- package/dist/src/commands/browse-platform.js.map +1 -0
- package/dist/src/commands/browse-workflow.d.ts +4 -0
- package/dist/src/commands/browse-workflow.d.ts.map +1 -0
- package/dist/src/commands/browse-workflow.js +153 -0
- package/dist/src/commands/browse-workflow.js.map +1 -0
- package/dist/src/commands/browse.d.ts +10 -6
- package/dist/src/commands/browse.d.ts.map +1 -1
- package/dist/src/commands/browse.js +11 -2154
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/commands/design-detect.d.ts +21 -0
- package/dist/src/commands/design-detect.d.ts.map +1 -0
- package/dist/src/commands/design-detect.js +127 -0
- package/dist/src/commands/design-detect.js.map +1 -0
- package/dist/src/commands/design-palette.d.ts +22 -0
- package/dist/src/commands/design-palette.d.ts.map +1 -0
- package/dist/src/commands/design-palette.js +539 -0
- package/dist/src/commands/design-palette.js.map +1 -0
- package/dist/src/commands/hooks-core-commands.d.ts +10 -0
- package/dist/src/commands/hooks-core-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-core-commands.js +377 -0
- package/dist/src/commands/hooks-core-commands.js.map +1 -0
- package/dist/src/commands/hooks-coverage-commands.d.ts +12 -0
- package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-coverage-commands.js +1217 -0
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -0
- package/dist/src/commands/hooks-coverage-utils.d.ts +42 -0
- package/dist/src/commands/hooks-coverage-utils.d.ts.map +1 -0
- package/dist/src/commands/hooks-coverage-utils.js +220 -0
- package/dist/src/commands/hooks-coverage-utils.js.map +1 -0
- package/dist/src/commands/hooks-extended-commands.d.ts +14 -0
- package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-extended-commands.js +579 -0
- package/dist/src/commands/hooks-extended-commands.js.map +1 -0
- package/dist/src/commands/hooks-formatting.d.ts +13 -0
- package/dist/src/commands/hooks-formatting.d.ts.map +1 -0
- package/dist/src/commands/hooks-formatting.js +42 -0
- package/dist/src/commands/hooks-formatting.js.map +1 -0
- package/dist/src/commands/hooks-routing-commands.d.ts +15 -0
- package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-routing-commands.js +723 -0
- package/dist/src/commands/hooks-routing-commands.js.map +1 -0
- package/dist/src/commands/hooks-workers.d.ts +9 -0
- package/dist/src/commands/hooks-workers.d.ts.map +1 -0
- package/dist/src/commands/hooks-workers.js +782 -0
- package/dist/src/commands/hooks-workers.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +8 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +179 -4103
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +1 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +6 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +14 -15
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/tokens.d.ts.map +1 -1
- package/dist/src/commands/tokens.js +77 -1
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +18 -8
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +39 -5
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +25 -5
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts +3 -5
- package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +619 -326
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-embedding.d.ts +161 -0
- package/dist/src/mcp-tools/hooks-embedding.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-embedding.js +506 -0
- package/dist/src/mcp-tools/hooks-embedding.js.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts +26 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.js +1328 -0
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts +27 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.js +1591 -0
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts +3 -38
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +5 -3393
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +24 -14
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +54 -1
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.d.ts +58 -0
- package/dist/src/memory/embedding-operations.d.ts.map +1 -0
- package/dist/src/memory/embedding-operations.js +299 -0
- package/dist/src/memory/embedding-operations.js.map +1 -0
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +37 -3
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +130 -0
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -0
- package/dist/src/memory/hnsw-operations.js +400 -0
- package/dist/src/memory/hnsw-operations.js.map +1 -0
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +42 -23
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +52 -8
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.d.ts +67 -0
- package/dist/src/memory/memory-crud.d.ts.map +1 -0
- package/dist/src/memory/memory-crud.js +415 -0
- package/dist/src/memory/memory-crud.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts +9 -322
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +17 -1794
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-migrations.d.ts +30 -0
- package/dist/src/memory/memory-migrations.d.ts.map +1 -0
- package/dist/src/memory/memory-migrations.js +134 -0
- package/dist/src/memory/memory-migrations.js.map +1 -0
- package/dist/src/memory/memory-read.d.ts +78 -0
- package/dist/src/memory/memory-read.d.ts.map +1 -0
- package/dist/src/memory/memory-read.js +331 -0
- package/dist/src/memory/memory-read.js.map +1 -0
- package/dist/src/memory/memory-schema.d.ts +13 -0
- package/dist/src/memory/memory-schema.d.ts.map +1 -0
- package/dist/src/memory/memory-schema.js +167 -0
- package/dist/src/memory/memory-schema.js.map +1 -0
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +37 -4
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/route-outcomes.js +16 -6
- package/dist/src/monovector/route-outcomes.js.map +1 -1
- package/dist/src/pricing/model-pricing.d.ts +41 -0
- package/dist/src/pricing/model-pricing.d.ts.map +1 -0
- package/dist/src/pricing/model-pricing.js +61 -0
- package/dist/src/pricing/model-pricing.js.map +1 -0
- package/dist/src/ui/.monomind/capture/active-run.json +1 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +3 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +11 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +540 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +3 -0
- package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +2 -0
- package/dist/src/ui/MODULARIZATION_PLAN.md +79 -0
- package/dist/src/ui/collector.mjs +23 -13
- package/dist/src/ui/dashboard.html +1652 -13
- package/dist/src/ui/data/known-projects.json +1 -0
- package/dist/src/ui/data/mastermind-events.jsonl +553 -0
- package/dist/src/ui/data/sessions/_index.json +1 -0
- package/dist/src/ui/data/sessions/final-sess-001.jsonl +542 -0
- package/dist/src/ui/data/unknown-events.jsonl +1 -0
- package/dist/src/ui/orgs.html +154 -10
- package/dist/src/ui/server.mjs +1131 -168
- package/dist/src/ui/sse-manager.mjs +119 -0
- package/dist/src/update/checker.js +1 -1
- package/dist/src/update/checker.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/workflow/builtin-handlers.js +321 -0
- package/dist/workflow/engine.js +253 -0
- package/dist/workflow/expression.js +98 -0
- package/dist/workflow/types.js +2 -0
- package/package.json +8 -5
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-distill
|
|
3
|
+
description: Simplify an over-designed, cluttered, or complexity-burdened interface — remove what doesn't earn its place, reveal the essential structure underneath.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target page, flow, or component]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Distill
|
|
10
|
+
|
|
11
|
+
Simplify an over-designed or cluttered interface. Read `reference/distill.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Philosophy
|
|
14
|
+
|
|
15
|
+
Every element on a page is a claim on the user's attention. When too many claims compete equally, the user's attention costs rise and comprehension falls. Distill removes the claims that can't justify their cost.
|
|
16
|
+
|
|
17
|
+
## Assess the Clutter
|
|
18
|
+
|
|
19
|
+
Walk through the interface and identify:
|
|
20
|
+
|
|
21
|
+
**Structural complexity**
|
|
22
|
+
- How many distinct visual layers exist? (More than 3 is usually too many)
|
|
23
|
+
- How many columns? (Sometimes 1 column is the right answer)
|
|
24
|
+
- Are there containers-within-containers? (Nested cards are always wrong)
|
|
25
|
+
- Is the Z-axis used purposefully or as a decoration?
|
|
26
|
+
|
|
27
|
+
**Information redundancy**
|
|
28
|
+
- Is the same information shown twice? (Heading + tooltip + label that all say the same thing)
|
|
29
|
+
- Are there labels that label things that are already obvious from context?
|
|
30
|
+
- Are there intros that restate the page title?
|
|
31
|
+
|
|
32
|
+
**Visual noise**
|
|
33
|
+
- Decorative dividers between every section when whitespace would suffice
|
|
34
|
+
- Icon + text where one alone would communicate equally well
|
|
35
|
+
- Background patterns, textures, or gradients that add nothing
|
|
36
|
+
|
|
37
|
+
**Navigation complexity**
|
|
38
|
+
- Are there paths that lead nowhere useful?
|
|
39
|
+
- Are there settings no one changes?
|
|
40
|
+
- Are there features that serve < 5% of users in the primary navigation?
|
|
41
|
+
|
|
42
|
+
## Distillation Protocol
|
|
43
|
+
|
|
44
|
+
1. **List every element** on the target surface (visual inventory)
|
|
45
|
+
2. **For each element, ask**: if this were removed, would a first-time user notice something missing? If no: remove it
|
|
46
|
+
3. **Consolidate redundant information** into one canonical location
|
|
47
|
+
4. **Increase whitespace** where elements were removed — don't fill the vacuum with something else
|
|
48
|
+
5. **Verify the essential path** still works and is faster than before
|
|
49
|
+
|
|
50
|
+
## Output
|
|
51
|
+
|
|
52
|
+
A version of the interface that is measurably simpler:
|
|
53
|
+
- Fewer distinct visual elements on screen at once
|
|
54
|
+
- Clearer visual hierarchy (the important thing is visually louder than the less-important thing)
|
|
55
|
+
- Faster to scan for a first-time user
|
|
56
|
+
- No functionality removed from the primary user path
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-document
|
|
3
|
+
description: Create or update DESIGN.md — extract and codify the design system from the codebase into a portable, AI-readable design reference that anchors all future monodesign work.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[project path]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Document
|
|
10
|
+
|
|
11
|
+
Create or update `DESIGN.md` — the design system reference for this project. Every `/monodesign` sub-command uses DESIGN.md to make on-brand decisions without asking the same questions repeatedly.
|
|
12
|
+
|
|
13
|
+
DESIGN.md is the portable export of the project's design system: colors, typography, spacing, components, and conventions — extracted from what's actually in the code, not invented.
|
|
14
|
+
|
|
15
|
+
Read `reference/document.md` from the monodesign skill directory for the full protocol.
|
|
16
|
+
|
|
17
|
+
## Discovery
|
|
18
|
+
|
|
19
|
+
**Extract from codebase:**
|
|
20
|
+
```bash
|
|
21
|
+
# Find CSS custom properties
|
|
22
|
+
grep -r "^--" src/ --include="*.css" --include="*.scss" -h | sort -u
|
|
23
|
+
|
|
24
|
+
# Find font declarations
|
|
25
|
+
grep -r "font-family\|@font-face\|@import.*font" src/ -h | sort -u
|
|
26
|
+
|
|
27
|
+
# Find color values
|
|
28
|
+
grep -rE "#[0-9a-fA-F]{3,8}|oklch\(|rgb\(|hsl\(" src/ -h | sort -u | head -50
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Also read:**
|
|
32
|
+
- `tailwind.config.js/ts` — theme configuration
|
|
33
|
+
- `tokens.css`, `theme.css`, `variables.css`, or equivalent
|
|
34
|
+
- A representative component to understand CSS conventions
|
|
35
|
+
|
|
36
|
+
## DESIGN.md Structure
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
# Design System
|
|
40
|
+
|
|
41
|
+
## Brand Identity
|
|
42
|
+
**Name**: [product name]
|
|
43
|
+
**System**: [design system name, e.g. "Neo kinpaku system"]
|
|
44
|
+
**Strategy**: [Restrained | Committed | Full palette | Drenched]
|
|
45
|
+
**Theme**: [dark | light | both]
|
|
46
|
+
|
|
47
|
+
## Colors (OKLCH)
|
|
48
|
+
|
|
49
|
+
### Brand
|
|
50
|
+
| Token | Value | Use |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| --color-brand | oklch(…) | Primary accent |
|
|
53
|
+
| --color-brand-muted | oklch(…) | Secondary accent |
|
|
54
|
+
|
|
55
|
+
### Surfaces
|
|
56
|
+
[table]
|
|
57
|
+
|
|
58
|
+
### Text
|
|
59
|
+
[table]
|
|
60
|
+
|
|
61
|
+
## Typography
|
|
62
|
+
|
|
63
|
+
| Role | Font | Size | Weight | Line Height |
|
|
64
|
+
|---|---|---|---|---|
|
|
65
|
+
| Display | [family] | clamp(3rem, 5vw, 5rem) | 800 | 1.1 |
|
|
66
|
+
| Heading 1 | … | … | … | … |
|
|
67
|
+
| Body | … | 1rem | 400 | 1.6 |
|
|
68
|
+
| Caption | … | 0.875rem | 400 | 1.4 |
|
|
69
|
+
|
|
70
|
+
## Spacing Scale
|
|
71
|
+
[4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96 / 128]
|
|
72
|
+
|
|
73
|
+
## Components
|
|
74
|
+
[Brief description of key shared components and their variants]
|
|
75
|
+
|
|
76
|
+
## Conventions
|
|
77
|
+
- File naming: [convention]
|
|
78
|
+
- Token naming: [convention]
|
|
79
|
+
- Component import style: [named/default/barrel]
|
|
80
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-extract
|
|
3
|
+
description: Extract an implicit design system from an existing codebase — discover tokens, components, patterns, and conventions already present, then codify them into a formal system.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target codebase path or project]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Extract
|
|
10
|
+
|
|
11
|
+
Extract a design system from an existing codebase. Read `reference/extract.md` and `reference/token-architecture.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Philosophy
|
|
14
|
+
|
|
15
|
+
Every codebase with more than a few pages has an implicit design system — inconsistencies, but also patterns that have emerged over time. Extract makes the implicit explicit, without inventing a new system on top of what exists.
|
|
16
|
+
|
|
17
|
+
## Discovery Phase
|
|
18
|
+
|
|
19
|
+
**Color inventory**
|
|
20
|
+
- Collect all color values used in the codebase (grep for `#`, `rgb`, `hsl`, `oklch`)
|
|
21
|
+
- Group by apparent purpose (backgrounds, text, accents, borders, shadows)
|
|
22
|
+
- Identify the brand anchor color(s)
|
|
23
|
+
- Spot inconsistencies (5 slightly different grays)
|
|
24
|
+
|
|
25
|
+
**Typography inventory**
|
|
26
|
+
- Collect all font-family, font-size, font-weight, line-height, letter-spacing values
|
|
27
|
+
- Map to semantic roles (heading-xl, heading-lg, body, caption, etc.)
|
|
28
|
+
- Identify the type scale (if any)
|
|
29
|
+
|
|
30
|
+
**Spacing inventory**
|
|
31
|
+
- Collect all padding, margin, gap values
|
|
32
|
+
- Identify if a consistent scale exists (4/8/16/24/32/48...)
|
|
33
|
+
- Spot outliers
|
|
34
|
+
|
|
35
|
+
**Component inventory**
|
|
36
|
+
- List all recurring UI patterns (buttons, inputs, cards, badges, modals)
|
|
37
|
+
- Note variants (primary/secondary/ghost buttons, etc.)
|
|
38
|
+
- Identify inconsistent implementations of the same component
|
|
39
|
+
|
|
40
|
+
## Codification
|
|
41
|
+
|
|
42
|
+
**Token architecture** (CSS custom properties):
|
|
43
|
+
```css
|
|
44
|
+
:root {
|
|
45
|
+
/* Colors */
|
|
46
|
+
--color-brand-[scale]: oklch(…);
|
|
47
|
+
--color-surface-[level]: oklch(…);
|
|
48
|
+
--color-ink-[weight]: oklch(…);
|
|
49
|
+
|
|
50
|
+
/* Type scale */
|
|
51
|
+
--text-[size]: [value];
|
|
52
|
+
--font-[role]: [family];
|
|
53
|
+
|
|
54
|
+
/* Spacing scale */
|
|
55
|
+
--space-[size]: [rem];
|
|
56
|
+
|
|
57
|
+
/* Radius */
|
|
58
|
+
--radius-[size]: [rem];
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Component documentation**
|
|
63
|
+
For each identified component: props, variants, states, example usage.
|
|
64
|
+
|
|
65
|
+
## Output: DESIGN.md
|
|
66
|
+
|
|
67
|
+
Write a `DESIGN.md` at the project root capturing:
|
|
68
|
+
- Brand colors with OKLCH values
|
|
69
|
+
- Type scale and font families
|
|
70
|
+
- Spacing scale
|
|
71
|
+
- Key components with their states
|
|
72
|
+
- Design conventions (rounded vs. sharp, dense vs. airy, etc.)
|
|
73
|
+
|
|
74
|
+
This becomes the anchor for all future `/monodesign` work on this project.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-harden
|
|
3
|
+
description: Fix accessibility violations, keyboard navigation gaps, semantic HTML issues, ARIA problems, and contrast failures — bring the interface to WCAG AA compliance.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target page or component]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Harden
|
|
10
|
+
|
|
11
|
+
Fix accessibility and robustness issues. Read `reference/harden.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Accessibility Targets
|
|
14
|
+
|
|
15
|
+
**WCAG AA** is the floor:
|
|
16
|
+
- Body text: ≥4.5:1 contrast ratio
|
|
17
|
+
- Large text (≥18px or bold ≥14px): ≥3:1
|
|
18
|
+
- Interactive element focus indicators: ≥3:1 against adjacent colors
|
|
19
|
+
- No information conveyed by color alone
|
|
20
|
+
|
|
21
|
+
**Keyboard navigation**
|
|
22
|
+
- Every interactive element reachable by Tab in logical order
|
|
23
|
+
- Visible focus ring on every focused element (never `outline: none` without a replacement)
|
|
24
|
+
- No keyboard traps
|
|
25
|
+
- Escape closes modals and dropdowns
|
|
26
|
+
- Arrow keys navigate within a group (menu items, radio buttons, tabs)
|
|
27
|
+
|
|
28
|
+
**Semantic HTML**
|
|
29
|
+
- Heading hierarchy is sequential (h1 → h2 → h3, no skipping)
|
|
30
|
+
- Landmark roles present (main, nav, aside, footer)
|
|
31
|
+
- Interactive elements use native elements (button, a, input) not div
|
|
32
|
+
- Forms have labels associated with inputs (via for/id or wrapping label)
|
|
33
|
+
|
|
34
|
+
**ARIA**
|
|
35
|
+
- Used only when native semantics can't convey the role
|
|
36
|
+
- `aria-label` on icon-only buttons
|
|
37
|
+
- `aria-expanded`, `aria-controls` on toggle buttons
|
|
38
|
+
- `aria-live` on dynamic content that updates without page reload
|
|
39
|
+
- `role="status"` or `role="alert"` on notification areas
|
|
40
|
+
|
|
41
|
+
**Images**
|
|
42
|
+
- Decorative images: `alt=""`
|
|
43
|
+
- Informative images: alt describes the information (not "image of...")
|
|
44
|
+
- Icon images: alt is the icon's semantic meaning
|
|
45
|
+
|
|
46
|
+
## Hardening Checklist
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
[ ] Run automated check: `npx axe <url>` or equivalent
|
|
50
|
+
[ ] Tab through entire page — every interactive element reachable
|
|
51
|
+
[ ] Check all headings form a logical hierarchy
|
|
52
|
+
[ ] Verify all contrast ratios pass
|
|
53
|
+
[ ] Test all interactive elements with keyboard only
|
|
54
|
+
[ ] Verify screen reader announces dynamic content
|
|
55
|
+
[ ] Check all forms have properly associated labels
|
|
56
|
+
[ ] Test at 200% zoom — nothing overlaps or disappears
|
|
57
|
+
[ ] Verify reduced motion preference is respected
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Never
|
|
61
|
+
|
|
62
|
+
- `outline: none` or `outline: 0` without a replacement focus indicator
|
|
63
|
+
- `tabindex="-1"` on focusable elements without a keyboard alternative
|
|
64
|
+
- Color as the only differentiator between states
|
|
65
|
+
- ARIA roles that contradict the HTML semantics (role="button" on an anchor that navigates)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-live
|
|
3
|
+
description: Iterate on the UI directly in the browser — screenshot, identify issues, apply targeted CSS fixes, verify, repeat — until the live result matches the design intent.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target URL or component]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Live
|
|
10
|
+
|
|
11
|
+
Iterate on the UI directly in the browser. Read `reference/live.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## CLAUDE.md Requirement
|
|
14
|
+
|
|
15
|
+
This command requires browser automation. Before proceeding, verify that `npx monomind browse` is available (`Skill("agent-browser-testing")`). If not, the `/monodesign live` flow falls back to editing CSS files and asking the user to refresh.
|
|
16
|
+
|
|
17
|
+
## Live Iteration Loop
|
|
18
|
+
|
|
19
|
+
The loop runs until the user confirms the design is right or cancels.
|
|
20
|
+
|
|
21
|
+
### 1. Screenshot
|
|
22
|
+
Capture the current state of the target URL or component. No assumptions — look at what's actually rendered.
|
|
23
|
+
|
|
24
|
+
### 2. Diagnose
|
|
25
|
+
Look at the screenshot with fresh eyes. Identify the top 3 issues:
|
|
26
|
+
- Visual hierarchy problems
|
|
27
|
+
- Spacing inconsistencies
|
|
28
|
+
- Color contrast issues
|
|
29
|
+
- Typography rendering
|
|
30
|
+
- Interaction state gaps
|
|
31
|
+
- Alignment problems
|
|
32
|
+
|
|
33
|
+
State the issues clearly before touching any code.
|
|
34
|
+
|
|
35
|
+
### 3. Apply targeted fix
|
|
36
|
+
Edit the CSS for the specific issue identified. Keep each fix surgical — change one thing at a time.
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
/* Targeted fix: heading weight is too light — can't distinguish from body */
|
|
40
|
+
.hero-heading {
|
|
41
|
+
font-weight: 800;
|
|
42
|
+
font-size: clamp(2.5rem, 5vw, 4rem);
|
|
43
|
+
letter-spacing: -0.03em;
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 4. Screenshot again
|
|
48
|
+
Verify the fix had the intended effect. Check for regressions on neighboring elements.
|
|
49
|
+
|
|
50
|
+
### 5. Confirm or continue
|
|
51
|
+
If the target issue is resolved, state what was fixed and move to the next. If the fix introduced a regression, roll back and try a different approach.
|
|
52
|
+
|
|
53
|
+
## Guidelines
|
|
54
|
+
|
|
55
|
+
- Fix the most visually impactful issue first
|
|
56
|
+
- Don't batch multiple fixes — screenshot after each change
|
|
57
|
+
- State what you're about to change and why before changing it
|
|
58
|
+
- If the same area has been fixed 3+ times without convergence, step back and assess whether the problem is structural (wrong layout approach) vs. cosmetic
|
|
59
|
+
- Deliver final CSS that can be committed, not just live browser overrides
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-onboard
|
|
3
|
+
description: Design or improve user onboarding — first-run experiences, empty states, progressive disclosure, setup wizards, and the "aha moment" path for new users.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target product or feature to onboard]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Onboard
|
|
10
|
+
|
|
11
|
+
Design or improve user onboarding. Read `reference/onboard.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Onboarding Philosophy
|
|
14
|
+
|
|
15
|
+
The goal of onboarding is not to explain the product. It's to get the user to their first moment of value as fast as possible. Everything that doesn't serve that goal is a liability.
|
|
16
|
+
|
|
17
|
+
## The Aha Moment Map
|
|
18
|
+
|
|
19
|
+
Before designing anything, identify:
|
|
20
|
+
1. **What is the first moment of genuine value for a new user?** (Not "they understand the product" — what specific thing makes them say "oh, this is useful")
|
|
21
|
+
2. **What is the shortest path to that moment?** (Every step that isn't required is a step where the user can drop off)
|
|
22
|
+
3. **What does the user need to know before they can get there?** (Only these things — nothing more)
|
|
23
|
+
|
|
24
|
+
## Onboarding Patterns
|
|
25
|
+
|
|
26
|
+
**Empty state onboarding**
|
|
27
|
+
The most overlooked opportunity. When a user first arrives at a feature with no data, the empty state is their first experience of that feature. It should:
|
|
28
|
+
- Describe what will appear here (not be blank)
|
|
29
|
+
- Show a CTA to add the first item
|
|
30
|
+
- Optionally show a preview of what it will look like when populated
|
|
31
|
+
|
|
32
|
+
**Progressive disclosure onboarding**
|
|
33
|
+
Start with the minimal useful version of the product. Reveal additional features only when the user's behavior signals readiness (they've used the basic feature N times, or they've hit a limitation).
|
|
34
|
+
|
|
35
|
+
**Contextual tooltips**
|
|
36
|
+
Not a tour. Tooltips that appear at the right moment (user hovers a new feature, user completes an action) and disappear when dismissed. Never a forced 10-step tour.
|
|
37
|
+
|
|
38
|
+
**Setup wizard**
|
|
39
|
+
When the product genuinely requires configuration before it's useful (API keys, workspace settings, integrations), a wizard is appropriate. Keep it short: 3 steps max, each with a clear benefit statement ("After this, you can...").
|
|
40
|
+
|
|
41
|
+
## Copy Principles for Onboarding
|
|
42
|
+
|
|
43
|
+
- Frame every step as a benefit: "Connect your calendar to automatically block focus time" not "Calendar integration step 2 of 3"
|
|
44
|
+
- Progress indicators: show how far they've come, not how far they have to go
|
|
45
|
+
- Skip options: always provide a way to skip or come back later
|
|
46
|
+
- No dead ends: every empty state has an action, every error has a recovery path
|
|
47
|
+
|
|
48
|
+
## Output
|
|
49
|
+
|
|
50
|
+
Design decisions + code for the specific onboarding surface: empty states, tooltip content, wizard steps, or first-run flow — with copy, layout, and interaction states.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-optimize
|
|
3
|
+
description: Improve frontend performance — animation smoothness, bundle size, rendering, image optimization, and Core Web Vitals — without sacrificing design quality.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target page or component]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Optimize
|
|
10
|
+
|
|
11
|
+
Improve frontend performance. Read `reference/optimize.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Performance Target: Core Web Vitals
|
|
14
|
+
|
|
15
|
+
- **LCP** (Largest Contentful Paint): ≤2.5s
|
|
16
|
+
- **INP** (Interaction to Next Paint): ≤200ms
|
|
17
|
+
- **CLS** (Cumulative Layout Shift): ≤0.1
|
|
18
|
+
|
|
19
|
+
## Common Design-Layer Performance Issues
|
|
20
|
+
|
|
21
|
+
**Animation performance**
|
|
22
|
+
- Animating layout properties (`width`, `height`, `padding`, `margin`, `top`, `left`) causes layout recalculation on every frame — replace with `transform` and `opacity` only
|
|
23
|
+
- Unbounded blur: `blur(20px)` on many elements is expensive — test and cap
|
|
24
|
+
- `will-change: transform` tells the browser to promote to its own layer — use sparingly (memory cost)
|
|
25
|
+
- Too many simultaneous animations — stagger rather than launch all at once
|
|
26
|
+
|
|
27
|
+
**Image optimization**
|
|
28
|
+
- `loading="lazy"` on all images below the fold
|
|
29
|
+
- `width` + `height` attributes on all images to prevent CLS
|
|
30
|
+
- Modern formats: WebP/AVIF > JPEG/PNG for photos
|
|
31
|
+
- `srcset` for responsive images
|
|
32
|
+
- CSS background images: consider whether an `<img>` with `loading="lazy"` would be faster
|
|
33
|
+
|
|
34
|
+
**Font loading**
|
|
35
|
+
- `font-display: swap` to prevent invisible text during font load
|
|
36
|
+
- Preload critical fonts: `<link rel="preload" as="font">`
|
|
37
|
+
- Subset fonts if using a custom typeface (Google Fonts does this automatically)
|
|
38
|
+
|
|
39
|
+
**CSS performance**
|
|
40
|
+
- Avoid `@import` in CSS (render-blocking)
|
|
41
|
+
- Don't use `:nth-child()` in hot paths with many elements
|
|
42
|
+
- CSS containment: `contain: layout style` on isolated components prevents unintended reflows
|
|
43
|
+
|
|
44
|
+
**JavaScript**
|
|
45
|
+
- Defer non-critical scripts: `<script defer>` or `<script type="module">`
|
|
46
|
+
- Code-split by route if using a framework
|
|
47
|
+
- Avoid inline event handlers at scale (use event delegation)
|
|
48
|
+
|
|
49
|
+
## Measurement
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Lighthouse in CLI
|
|
53
|
+
npx lighthouse <url> --output json --output html
|
|
54
|
+
|
|
55
|
+
# Web Vitals in DevTools
|
|
56
|
+
# Performance tab → Core Web Vitals section
|
|
57
|
+
|
|
58
|
+
# Bundle analysis (if Vite)
|
|
59
|
+
npx vite-bundle-analyzer
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Output
|
|
63
|
+
|
|
64
|
+
Specific optimizations with before/after measurements where measurable. Each change should cite the metric it improves.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-overdrive
|
|
3
|
+
description: Push an interface past conventional limits — cinematic page transitions, GPU-accelerated data visualization, physics-based interactions, generative art, extraordinary technical effects that make users say "wow".
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target interface or specific effect goal]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Overdrive
|
|
10
|
+
|
|
11
|
+
Push an interface past conventional limits.
|
|
12
|
+
|
|
13
|
+
**Start your response with:**
|
|
14
|
+
```
|
|
15
|
+
──────────── ⚡ OVERDRIVE ─────────────
|
|
16
|
+
》》》 Entering overdrive mode...
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Read `reference/overdrive.md` from the monodesign skill directory for the full protocol.
|
|
20
|
+
|
|
21
|
+
## Context Determines "Extraordinary"
|
|
22
|
+
|
|
23
|
+
A particle system on a creative portfolio is impressive. The same particle system on a settings page is embarrassing. Before choosing a technique, ask: **what would make a user of THIS specific interface say "wow, that's nice"?**
|
|
24
|
+
|
|
25
|
+
- **Visual/marketing surfaces**: sensory — scroll-driven reveals, shader backgrounds, cinematic page transitions, generative art responding to cursor
|
|
26
|
+
- **Functional UI**: felt — dialog morphing from its trigger via View Transitions, data table rendering 100k rows at 60fps via virtual scrolling, form with streaming validation that feels instant, drag-and-drop with spring physics
|
|
27
|
+
- **Performance-critical UI**: invisible — search that filters 50k items without a flicker, image editor that processes near-real-time
|
|
28
|
+
- **Data-heavy interfaces**: fluid — GPU-accelerated rendering via Canvas/WebGL, animated transitions between data states
|
|
29
|
+
|
|
30
|
+
**The common thread**: something about the implementation goes beyond what users expect from a web interface. The technique serves the experience.
|
|
31
|
+
|
|
32
|
+
## Propose Before Building
|
|
33
|
+
|
|
34
|
+
Do NOT jump straight to implementation. You MUST:
|
|
35
|
+
|
|
36
|
+
1. Think through **2–3 different directions**: technique, level of ambition, aesthetic approach
|
|
37
|
+
2. **Ask the user** to pick before writing code. Explain trade-offs (browser support, performance cost, complexity)
|
|
38
|
+
3. Only proceed with the confirmed direction
|
|
39
|
+
|
|
40
|
+
## The Toolkit
|
|
41
|
+
|
|
42
|
+
**Cinematic transitions**: View Transitions API, shared element transitions, `::view-transition-group`
|
|
43
|
+
|
|
44
|
+
**Scroll-driven**: `animation-timeline: scroll()`, Intersection Observer with CSS transitions, parallax via transform
|
|
45
|
+
|
|
46
|
+
**Generative/ambient**: CSS custom properties + JS, Canvas 2D for simple generative art, WebGL/Three.js for shaders
|
|
47
|
+
|
|
48
|
+
**Physics**: spring animations via motion.dev, GSAP with ease functions, Popmotion
|
|
49
|
+
|
|
50
|
+
**Data at scale**: virtual scrolling (TanStack Virtual), Canvas/WebGL rendering, Web Workers for computation
|
|
51
|
+
|
|
52
|
+
**GPU compositing**: `transform` + `opacity` only, `will-change` on animated layers, `contain: strict` for isolation
|
|
53
|
+
|
|
54
|
+
## Iterate in Browser
|
|
55
|
+
|
|
56
|
+
Technically ambitious effects almost never look right on the first try. Use browser automation to watch the effect play. Expect multiple rounds of refinement. The gap between "technically works" and "looks extraordinary" is closed through visual iteration, not code alone.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-polish
|
|
3
|
+
description: Perform a meticulous final pass to catch all the small details that separate good work from great work — design system alignment, interaction states, spacing precision, copy consistency, edge cases.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target component, page, or feature]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Polish
|
|
10
|
+
|
|
11
|
+
Perform a meticulous final pass. The difference between shipped and polished. Read `reference/polish.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Design System Discovery (required first step)
|
|
14
|
+
|
|
15
|
+
1. **Find the design system**: Look for documentation, component libraries, style guides, token definitions
|
|
16
|
+
2. **Note the conventions**: spacing scale, color tokens, motion patterns, component API
|
|
17
|
+
3. **Identify drift, then name the root cause**: classify each deviation as:
|
|
18
|
+
- **Missing token** — value should exist in the system but doesn't
|
|
19
|
+
- **One-off implementation** — shared component exists but wasn't used
|
|
20
|
+
- **Conceptual misalignment** — flow, IA, or hierarchy doesn't match neighboring features
|
|
21
|
+
|
|
22
|
+
Polish **must** align the feature with the design system. If none exists, polish against visible codebase conventions.
|
|
23
|
+
|
|
24
|
+
## Pre-Polish Assessment
|
|
25
|
+
|
|
26
|
+
1. **Review completeness**: Is it functionally complete? Are there known issues to preserve (mark TODOs)?
|
|
27
|
+
2. **Think experience-first**: Walk the path from the user's perspective before opening DevTools
|
|
28
|
+
3. **Identify polish areas**:
|
|
29
|
+
- Visual inconsistencies
|
|
30
|
+
- Spacing and alignment issues
|
|
31
|
+
- Interaction state gaps (hover, focus, active, disabled, loading)
|
|
32
|
+
- Copy inconsistencies and redundancies
|
|
33
|
+
- Edge cases and error states
|
|
34
|
+
- Loading and transition smoothness
|
|
35
|
+
- Information architecture drift
|
|
36
|
+
|
|
37
|
+
## Polish Checklist
|
|
38
|
+
|
|
39
|
+
**Visual**
|
|
40
|
+
- [ ] Consistent spacing using the design system scale
|
|
41
|
+
- [ ] Typography hierarchy visible at a glance (size + weight contrast)
|
|
42
|
+
- [ ] Color contrast meets WCAG AA minimums
|
|
43
|
+
- [ ] All interactive elements have hover + focus states
|
|
44
|
+
- [ ] Loading/skeleton states for async content
|
|
45
|
+
- [ ] Empty states designed (not blank)
|
|
46
|
+
|
|
47
|
+
**Copy**
|
|
48
|
+
- [ ] No restated headings or intros that repeat the title
|
|
49
|
+
- [ ] Error messages are actionable (not "Something went wrong")
|
|
50
|
+
- [ ] No em dashes — use commas, colons, or semicolons
|
|
51
|
+
- [ ] Consistent voice with PRODUCT.md
|
|
52
|
+
|
|
53
|
+
**Motion**
|
|
54
|
+
- [ ] Transitions feel intentional, not added by reflex
|
|
55
|
+
- [ ] All animations have `prefers-reduced-motion` fallback
|
|
56
|
+
- [ ] No layout-property animation
|
|
57
|
+
|
|
58
|
+
**Responsive**
|
|
59
|
+
- [ ] All text within viewport, no overflow at any breakpoint
|
|
60
|
+
- [ ] Touch targets ≥44×44px on mobile
|
|
61
|
+
|
|
62
|
+
## Browser Verification
|
|
63
|
+
|
|
64
|
+
Use browser automation to verify the live result — don't assume the CSS is correct. Check:
|
|
65
|
+
- The actual user path (not just the happy state)
|
|
66
|
+
- Mobile viewport
|
|
67
|
+
- Dark/light mode switch
|
|
68
|
+
- Keyboard navigation
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: monodesign-quieter
|
|
3
|
+
description: Reduce visual intensity in designs that are too loud, aggressive, or overstimulating — without losing personality or making the result generic.
|
|
4
|
+
type: design-sub-command
|
|
5
|
+
argument-hint: "[target page, component, or design]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Monodesign: Quieter
|
|
10
|
+
|
|
11
|
+
Quiet design is harder than bold design. Subtlety needs precision. Read `reference/quieter.md` from the monodesign skill directory for the full protocol.
|
|
12
|
+
|
|
13
|
+
## Register
|
|
14
|
+
|
|
15
|
+
**Brand**: "quieter" means more restrained palette, more whitespace, more typographic air. Drama is reduced, not eliminated — the POV stays intact.
|
|
16
|
+
|
|
17
|
+
**Product**: "quieter" means reducing visual noise. Fewer background accents, flatter cards, less color, less motion. The tool should disappear more completely into the task.
|
|
18
|
+
|
|
19
|
+
## Assess What's Too Loud
|
|
20
|
+
|
|
21
|
+
1. **Color saturation**: Overly bright or saturated colors competing for attention
|
|
22
|
+
2. **Contrast extremes**: Too much high-contrast juxtaposition without hierarchy
|
|
23
|
+
3. **Visual weight**: Too many bold, heavy elements with no quiet counterweight
|
|
24
|
+
4. **Animation excess**: Too much motion or overly dramatic effects
|
|
25
|
+
5. **Complexity**: Too many visual elements, patterns, or decorations
|
|
26
|
+
6. **Scale**: Everything is large with no moments of relief
|
|
27
|
+
|
|
28
|
+
## Quieting Interventions
|
|
29
|
+
|
|
30
|
+
**Reduce color intensity**
|
|
31
|
+
- Lower chroma on accents (oklab(L, less-C, H))
|
|
32
|
+
- Move from Committed/Full palette to Restrained strategy
|
|
33
|
+
- Replace colored backgrounds with tinted neutrals
|
|
34
|
+
|
|
35
|
+
**Add breathing room**
|
|
36
|
+
- Increase whitespace between sections
|
|
37
|
+
- Reduce the number of distinct visual elements per screen
|
|
38
|
+
- Let one element be the hero; everything else serves it
|
|
39
|
+
|
|
40
|
+
**Calm the type**
|
|
41
|
+
- Reduce heading sizes (headline at 3rem vs. 5rem)
|
|
42
|
+
- Use a lighter weight for headings (500 instead of 800)
|
|
43
|
+
- Increase line height and letter-spacing slightly
|
|
44
|
+
|
|
45
|
+
**Flatten the cards**
|
|
46
|
+
- Remove drop shadows or reduce them to near-invisible (0 1px 2px oklch(0% 0 0 / 0.05))
|
|
47
|
+
- Replace filled card backgrounds with subtle borders or no container at all
|
|
48
|
+
- Reduce border-radius
|
|
49
|
+
|
|
50
|
+
**Calm the motion**
|
|
51
|
+
- Remove section-fade animations that fire on every element
|
|
52
|
+
- Reduce animation duration by 30–50%
|
|
53
|
+
- Remove hover effects that aren't informative
|
|
54
|
+
|
|
55
|
+
## The Constraint
|
|
56
|
+
|
|
57
|
+
Quieter ≠ generic. The goal is precision and restraint, not the absence of a design point of view. If the result could be any brand's product, it's not quieter — it's erased. Preserve the brand's distinctive voice while removing the excess.
|