cdragon 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.
Files changed (91) hide show
  1. package/README.md +110 -0
  2. package/bin/cdragon.js +170 -0
  3. package/package.json +31 -0
  4. package/skills/agent-browser/SKILL.md +50 -0
  5. package/skills/grill-me/SKILL.md +7 -0
  6. package/skills/herdr-agent/SKILL.md +142 -0
  7. package/skills/herdr-cli/SKILL.md +388 -0
  8. package/skills/herdr-cli/scripts/herdr-agent-run-and-wait +203 -0
  9. package/skills/herdr-cli/scripts/herdr-agent-wait-complete +168 -0
  10. package/skills/notion-presentation/SKILL.md +170 -0
  11. package/skills/notion-presentation/references/example-redis-deck.md +97 -0
  12. package/skills/setup-matt-pocock-skills/SKILL.md +127 -0
  13. package/skills/setup-matt-pocock-skills/domain.md +51 -0
  14. package/skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
  15. package/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
  16. package/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
  17. package/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  18. package/skills/tdd/SKILL.md +108 -0
  19. package/skills/tdd/mocking.md +59 -0
  20. package/skills/tdd/refactoring.md +10 -0
  21. package/skills/tdd/tests.md +61 -0
  22. package/skills/to-html/SKILL.md +83 -0
  23. package/skills/to-html/designs/INDEX.md +74 -0
  24. package/skills/to-html/designs/airbnb.DESIGN.md +581 -0
  25. package/skills/to-html/designs/airtable.DESIGN.md +275 -0
  26. package/skills/to-html/designs/alipay.DESIGN.md +456 -0
  27. package/skills/to-html/designs/apple.DESIGN.md +566 -0
  28. package/skills/to-html/designs/banksalad.DESIGN.md +621 -0
  29. package/skills/to-html/designs/channeltalk.DESIGN.md +374 -0
  30. package/skills/to-html/designs/clay.DESIGN.md +398 -0
  31. package/skills/to-html/designs/clickhouse.DESIGN.md +374 -0
  32. package/skills/to-html/designs/cohere.DESIGN.md +361 -0
  33. package/skills/to-html/designs/coinone.DESIGN.md +218 -0
  34. package/skills/to-html/designs/coupang.DESIGN.md +502 -0
  35. package/skills/to-html/designs/cursor.DESIGN.md +416 -0
  36. package/skills/to-html/designs/elevenlabs.DESIGN.md +376 -0
  37. package/skills/to-html/designs/expo.DESIGN.md +373 -0
  38. package/skills/to-html/designs/figma.DESIGN.md +490 -0
  39. package/skills/to-html/designs/framer.DESIGN.md +393 -0
  40. package/skills/to-html/designs/freee.DESIGN.md +572 -0
  41. package/skills/to-html/designs/gangnamunni.DESIGN.md +621 -0
  42. package/skills/to-html/designs/gmarket.DESIGN.md +483 -0
  43. package/skills/to-html/designs/gogolook.DESIGN.md +131 -0
  44. package/skills/to-html/designs/hahow.DESIGN.md +158 -0
  45. package/skills/to-html/designs/hashicorp.DESIGN.md +369 -0
  46. package/skills/to-html/designs/hyundaicard.DESIGN.md +177 -0
  47. package/skills/to-html/designs/ibm.DESIGN.md +420 -0
  48. package/skills/to-html/designs/kakaobank.DESIGN.md +548 -0
  49. package/skills/to-html/designs/kakaopay.DESIGN.md +544 -0
  50. package/skills/to-html/designs/karrot.DESIGN.md +445 -0
  51. package/skills/to-html/designs/kdan.DESIGN.md +160 -0
  52. package/skills/to-html/designs/krds.DESIGN.md +997 -0
  53. package/skills/to-html/designs/line.DESIGN.md +431 -0
  54. package/skills/to-html/designs/linear.app.DESIGN.md +548 -0
  55. package/skills/to-html/designs/miro.DESIGN.md +272 -0
  56. package/skills/to-html/designs/mistral.ai.DESIGN.md +353 -0
  57. package/skills/to-html/designs/money-forward.DESIGN.md +401 -0
  58. package/skills/to-html/designs/mongodb.DESIGN.md +357 -0
  59. package/skills/to-html/designs/naver.DESIGN.md +533 -0
  60. package/skills/to-html/designs/nhncloud.DESIGN.md +174 -0
  61. package/skills/to-html/designs/opencode.ai.DESIGN.md +388 -0
  62. package/skills/to-html/designs/pinterest.DESIGN.md +322 -0
  63. package/skills/to-html/designs/posthog.DESIGN.md +430 -0
  64. package/skills/to-html/designs/raycast.DESIGN.md +422 -0
  65. package/skills/to-html/designs/remember.DESIGN.md +460 -0
  66. package/skills/to-html/designs/resend.DESIGN.md +396 -0
  67. package/skills/to-html/designs/sanity.DESIGN.md +449 -0
  68. package/skills/to-html/designs/sendbird.DESIGN.md +285 -0
  69. package/skills/to-html/designs/smarthr.DESIGN.md +404 -0
  70. package/skills/to-html/designs/socar.DESIGN.md +403 -0
  71. package/skills/to-html/designs/spotify.DESIGN.md +265 -0
  72. package/skills/to-html/designs/supabase.DESIGN.md +348 -0
  73. package/skills/to-html/designs/superhuman.DESIGN.md +414 -0
  74. package/skills/to-html/designs/together.ai.DESIGN.md +356 -0
  75. package/skills/to-html/designs/toss.DESIGN.md +655 -0
  76. package/skills/to-html/designs/uber.DESIGN.md +387 -0
  77. package/skills/to-html/designs/upstage.DESIGN.md +232 -0
  78. package/skills/to-html/designs/velog.DESIGN.md +168 -0
  79. package/skills/to-html/designs/vercel.DESIGN.md +479 -0
  80. package/skills/to-html/designs/wanted.DESIGN.md +529 -0
  81. package/skills/to-html/designs/wise.DESIGN.md +276 -0
  82. package/skills/to-html/designs/yanolja.DESIGN.md +463 -0
  83. package/skills/to-html/designs/yeogiotte.DESIGN.md +459 -0
  84. package/skills/to-html/designs/zapier.DESIGN.md +433 -0
  85. package/skills/to-html/designs/zigzag.DESIGN.md +633 -0
  86. package/skills/to-issues/SKILL.md +84 -0
  87. package/skills/to-prd/SKILL.md +75 -0
  88. package/src/colors.js +15 -0
  89. package/src/link.js +47 -0
  90. package/src/prompt.js +137 -0
  91. package/src/skills.js +75 -0
@@ -0,0 +1,35 @@
1
+ # Issue tracker: GitLab
2
+
3
+ Issues and PRDs for this repo live as GitLab issues. Use the [`glab`](https://gitlab.com/gitlab-org/cli) CLI for all operations.
4
+
5
+ ## Conventions
6
+
7
+ - **Create an issue**: `glab issue create --title "..." --description "..."`. Use a heredoc for multi-line descriptions. Pass `--description -` to open an editor.
8
+ - **Read an issue**: `glab issue view <number> --comments`. Use `-F json` for machine-readable output.
9
+ - **List issues**: `glab issue list -F json` with appropriate `--label` filters.
10
+ - **Comment on an issue**: `glab issue note <number> --message "..."`. GitLab calls comments "notes".
11
+ - **Apply / remove labels**: `glab issue update <number> --label "..."` / `--unlabel "..."`. Multiple labels can be comma-separated or by repeating the flag.
12
+ - **Close**: `glab issue close <number>`. `glab issue close` does not accept a closing comment, so post the explanation first with `glab issue note <number> --message "..."`, then close.
13
+ - **Merge requests**: GitLab calls PRs "merge requests". Use `glab mr create`, `glab mr view`, `glab mr note`, etc. — the same shape as `gh pr ...` with `mr` in place of `pr` and `note`/`--message` in place of `comment`/`--body`.
14
+
15
+ Infer the repo from `git remote -v` — `glab` does this automatically when run inside a clone.
16
+
17
+ ## Merge requests as a triage surface
18
+
19
+ **MRs as a request surface: no.** _(Set to `yes` if this repo treats external merge requests as feature requests; `/triage` reads this flag.)_
20
+
21
+ When set to `yes`, MRs run through the same labels and states as issues, using the `glab mr` equivalents:
22
+
23
+ - **Read an MR**: `glab mr view <number> --comments` and `glab mr diff <number>` for the diff.
24
+ - **List external MRs for triage**: `glab mr list -F json`, then keep only MRs whose author is not a project member/owner (a contributor's MR, not a maintainer's in-flight work).
25
+ - **Comment / label / close**: `glab mr note`, `glab mr update --label`/`--unlabel`, `glab mr close`.
26
+
27
+ Unlike GitHub, GitLab numbers issues and MRs separately, so `#42` is unambiguous once you know which surface the maintainer means.
28
+
29
+ ## When a skill says "publish to the issue tracker"
30
+
31
+ Create a GitLab issue.
32
+
33
+ ## When a skill says "fetch the relevant ticket"
34
+
35
+ Run `glab issue view <number> --comments`.
@@ -0,0 +1,19 @@
1
+ # Issue tracker: Local Markdown
2
+
3
+ Issues and PRDs for this repo live as markdown files in `.scratch/`.
4
+
5
+ ## Conventions
6
+
7
+ - One feature per directory: `.scratch/<feature-slug>/`
8
+ - The PRD is `.scratch/<feature-slug>/PRD.md`
9
+ - Implementation issues are `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01`
10
+ - Triage state is recorded as a `Status:` line near the top of each issue file (see `triage-labels.md` for the role strings)
11
+ - Comments and conversation history append to the bottom of the file under a `## Comments` heading
12
+
13
+ ## When a skill says "publish to the issue tracker"
14
+
15
+ Create a new file under `.scratch/<feature-slug>/` (creating the directory if needed).
16
+
17
+ ## When a skill says "fetch the relevant ticket"
18
+
19
+ Read the file at the referenced path. The user will normally pass the path or the issue number directly.
@@ -0,0 +1,15 @@
1
+ # Triage Labels
2
+
3
+ The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.
4
+
5
+ | Label in mattpocock/skills | Label in our tracker | Meaning |
6
+ | -------------------------- | -------------------- | ---------------------------------------- |
7
+ | `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
8
+ | `needs-info` | `needs-info` | Waiting on reporter for more information |
9
+ | `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
10
+ | `ready-for-human` | `ready-for-human` | Requires human implementation |
11
+ | `wontfix` | `wontfix` | Will not be actioned |
12
+
13
+ When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table.
14
+
15
+ Edit the right-hand column to match whatever vocabulary you actually use.
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: tdd
3
+ description: Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
4
+ ---
5
+
6
+ # Test-Driven Development
7
+
8
+ ## Philosophy
9
+
10
+ **Core principle**: Tests should verify behavior through public interfaces, not implementation details. Code can change entirely; tests shouldn't.
11
+
12
+ **Good tests** are integration-style: they exercise real code paths through public APIs. They describe _what_ the system does, not _how_ it does it. A good test reads like a specification - "user can checkout with valid cart" tells you exactly what capability exists. These tests survive refactors because they don't care about internal structure.
13
+
14
+ **Bad tests** are coupled to implementation. They mock internal collaborators, test private methods, or verify through external means (like querying a database directly instead of using the interface). The warning sign: your test breaks when you refactor, but behavior hasn't changed. If you rename an internal function and tests fail, those tests were testing implementation, not behavior.
15
+
16
+ See [tests.md](tests.md) for examples and [mocking.md](mocking.md) for mocking guidelines.
17
+
18
+ ## Anti-Pattern: Horizontal Slices
19
+
20
+ **DO NOT write all tests first, then all implementation.** This is "horizontal slicing" - treating RED as "write all tests" and GREEN as "write all code."
21
+
22
+ This produces **crap tests**:
23
+
24
+ - Tests written in bulk test _imagined_ behavior, not _actual_ behavior
25
+ - You end up testing the _shape_ of things (data structures, function signatures) rather than user-facing behavior
26
+ - Tests become insensitive to real changes - they pass when behavior breaks, fail when behavior is fine
27
+ - You outrun your headlights, committing to test structure before understanding the implementation
28
+
29
+ **Correct approach**: Vertical slices via tracer bullets. One test → one implementation → repeat. Each test responds to what you learned from the previous cycle. Because you just wrote the code, you know exactly what behavior matters and how to verify it.
30
+
31
+ ```
32
+ WRONG (horizontal):
33
+ RED: test1, test2, test3, test4, test5
34
+ GREEN: impl1, impl2, impl3, impl4, impl5
35
+
36
+ RIGHT (vertical):
37
+ RED→GREEN: test1→impl1
38
+ RED→GREEN: test2→impl2
39
+ RED→GREEN: test3→impl3
40
+ ...
41
+ ```
42
+
43
+ ## Workflow
44
+
45
+ ### 1. Planning
46
+
47
+ When exploring the codebase, read `CONTEXT.md` (if it exists) so that test names and interface vocabulary match the project's domain language, and respect ADRs in the area you're touching.
48
+
49
+ Before writing any code:
50
+
51
+ - [ ] Confirm with user what interface changes are needed
52
+ - [ ] Confirm with user which behaviors to test (prioritize)
53
+ - [ ] Identify opportunities for deep modules (small interface, deep implementation) — run the `/codebase-design` skill for the vocabulary and the testability checks
54
+ - [ ] List the behaviors to test (not implementation steps)
55
+ - [ ] Get user approval on the plan
56
+
57
+ Ask: "What should the public interface look like? Which behaviors are most important to test?"
58
+
59
+ **You can't test everything.** Confirm with the user exactly which behaviors matter most. Focus testing effort on critical paths and complex logic, not every possible edge case.
60
+
61
+ ### 2. Tracer Bullet
62
+
63
+ Write ONE test that confirms ONE thing about the system:
64
+
65
+ ```
66
+ RED: Write test for first behavior → test fails
67
+ GREEN: Write minimal code to pass → test passes
68
+ ```
69
+
70
+ This is your tracer bullet - proves the path works end-to-end.
71
+
72
+ ### 3. Incremental Loop
73
+
74
+ For each remaining behavior:
75
+
76
+ ```
77
+ RED: Write next test → fails
78
+ GREEN: Minimal code to pass → passes
79
+ ```
80
+
81
+ Rules:
82
+
83
+ - One test at a time
84
+ - Only enough code to pass current test
85
+ - Don't anticipate future tests
86
+ - Keep tests focused on observable behavior
87
+
88
+ ### 4. Refactor
89
+
90
+ After all tests pass, look for [refactor candidates](refactoring.md):
91
+
92
+ - [ ] Extract duplication
93
+ - [ ] Deepen modules (move complexity behind simple interfaces)
94
+ - [ ] Apply SOLID principles where natural
95
+ - [ ] Consider what new code reveals about existing code
96
+ - [ ] Run tests after each refactor step
97
+
98
+ **Never refactor while RED.** Get to GREEN first.
99
+
100
+ ## Checklist Per Cycle
101
+
102
+ ```
103
+ [ ] Test describes behavior, not implementation
104
+ [ ] Test uses public interface only
105
+ [ ] Test would survive internal refactor
106
+ [ ] Code is minimal for this test
107
+ [ ] No speculative features added
108
+ ```
@@ -0,0 +1,59 @@
1
+ # When to Mock
2
+
3
+ Mock at **system boundaries** only:
4
+
5
+ - External APIs (payment, email, etc.)
6
+ - Databases (sometimes - prefer test DB)
7
+ - Time/randomness
8
+ - File system (sometimes)
9
+
10
+ Don't mock:
11
+
12
+ - Your own classes/modules
13
+ - Internal collaborators
14
+ - Anything you control
15
+
16
+ ## Designing for Mockability
17
+
18
+ At system boundaries, design interfaces that are easy to mock:
19
+
20
+ **1. Use dependency injection**
21
+
22
+ Pass external dependencies in rather than creating them internally:
23
+
24
+ ```typescript
25
+ // Easy to mock
26
+ function processPayment(order, paymentClient) {
27
+ return paymentClient.charge(order.total);
28
+ }
29
+
30
+ // Hard to mock
31
+ function processPayment(order) {
32
+ const client = new StripeClient(process.env.STRIPE_KEY);
33
+ return client.charge(order.total);
34
+ }
35
+ ```
36
+
37
+ **2. Prefer SDK-style interfaces over generic fetchers**
38
+
39
+ Create specific functions for each external operation instead of one generic function with conditional logic:
40
+
41
+ ```typescript
42
+ // GOOD: Each function is independently mockable
43
+ const api = {
44
+ getUser: (id) => fetch(`/users/${id}`),
45
+ getOrders: (userId) => fetch(`/users/${userId}/orders`),
46
+ createOrder: (data) => fetch('/orders', { method: 'POST', body: data }),
47
+ };
48
+
49
+ // BAD: Mocking requires conditional logic inside the mock
50
+ const api = {
51
+ fetch: (endpoint, options) => fetch(endpoint, options),
52
+ };
53
+ ```
54
+
55
+ The SDK approach means:
56
+ - Each mock returns one specific shape
57
+ - No conditional logic in test setup
58
+ - Easier to see which endpoints a test exercises
59
+ - Type safety per endpoint
@@ -0,0 +1,10 @@
1
+ # Refactor Candidates
2
+
3
+ After TDD cycle, look for:
4
+
5
+ - **Duplication** → Extract function/class
6
+ - **Long methods** → Break into private helpers (keep tests on public interface)
7
+ - **Shallow modules** → Combine or deepen
8
+ - **Feature envy** → Move logic to where data lives
9
+ - **Primitive obsession** → Introduce value objects
10
+ - **Existing code** the new code reveals as problematic
@@ -0,0 +1,61 @@
1
+ # Good and Bad Tests
2
+
3
+ ## Good Tests
4
+
5
+ **Integration-style**: Test through real interfaces, not mocks of internal parts.
6
+
7
+ ```typescript
8
+ // GOOD: Tests observable behavior
9
+ test("user can checkout with valid cart", async () => {
10
+ const cart = createCart();
11
+ cart.add(product);
12
+ const result = await checkout(cart, paymentMethod);
13
+ expect(result.status).toBe("confirmed");
14
+ });
15
+ ```
16
+
17
+ Characteristics:
18
+
19
+ - Tests behavior users/callers care about
20
+ - Uses public API only
21
+ - Survives internal refactors
22
+ - Describes WHAT, not HOW
23
+ - One logical assertion per test
24
+
25
+ ## Bad Tests
26
+
27
+ **Implementation-detail tests**: Coupled to internal structure.
28
+
29
+ ```typescript
30
+ // BAD: Tests implementation details
31
+ test("checkout calls paymentService.process", async () => {
32
+ const mockPayment = jest.mock(paymentService);
33
+ await checkout(cart, payment);
34
+ expect(mockPayment.process).toHaveBeenCalledWith(cart.total);
35
+ });
36
+ ```
37
+
38
+ Red flags:
39
+
40
+ - Mocking internal collaborators
41
+ - Testing private methods
42
+ - Asserting on call counts/order
43
+ - Test breaks when refactoring without behavior change
44
+ - Test name describes HOW not WHAT
45
+ - Verifying through external means instead of interface
46
+
47
+ ```typescript
48
+ // BAD: Bypasses interface to verify
49
+ test("createUser saves to database", async () => {
50
+ await createUser({ name: "Alice" });
51
+ const row = await db.query("SELECT * FROM users WHERE name = ?", ["Alice"]);
52
+ expect(row).toBeDefined();
53
+ });
54
+
55
+ // GOOD: Verifies through interface
56
+ test("createUser makes user retrievable", async () => {
57
+ const user = await createUser({ name: "Alice" });
58
+ const retrieved = await getUser(user.id);
59
+ expect(retrieved.name).toBe("Alice");
60
+ });
61
+ ```
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: to-html
3
+ description: Use when the user asks to organize, summarize, lay out, or save content as an HTML file/document, or wants content rendered as a standalone shareable page/report — phrases like "html로 정리", "html로 뽑아/만들어/저장", "정리해서 html로", "시각화해서 저장". NOT for app UI code or React/components inside a project.
4
+ ---
5
+
6
+ # Visualizing as HTML
7
+
8
+ ## Overview
9
+ Turn arbitrary content (notes, meeting summaries, analyses, proposals, FGI reports) into a **single self-contained `.html` file** styled by a chosen brand design system bundled in `designs/`.
10
+
11
+ Two things are decided every time:
12
+ 1. **Which brand design** — one of **60+ brand design systems** in `designs/` (catalog: `designs/INDEX.md`).
13
+ 2. **How much motion/interaction** — minimal & static by default; richer only when the content earns it.
14
+
15
+ **Core principle: the user wants to read the content, not the decoration.** Design serves legibility first. Add interaction/animation only when it makes the content clearer or the user asked for it.
16
+
17
+ ## Workflow
18
+ 1. Confirm what content goes in and that they want an HTML file. If the content is ambiguous, ask what to include — never invent content.
19
+ 2. **Pick the design** (see *Design Selection*). Skim `designs/INDEX.md`; honor any brand the user named, otherwise infer from the content's domain and desired feel.
20
+ 3. **Read the chosen DESIGN.md fully** — `designs/<slug>.DESIGN.md` (exact filename is in INDEX.md), next to this SKILL.md. Follow its tokens, components, voice, and Motion & Easing section. Do not design from memory; the file is the source of truth.
21
+ 4. **Decide richness** (see *Minimal vs Rich*). Default = clean & static.
22
+ 5. Build ONE self-contained HTML file: inline `<style>`, system or CDN fonts only, no build step — it must work by double-clicking. Keep the source content's language (Korean stays Korean).
23
+ 6. **Save to the current working directory** with a descriptive filename + `.html`.
24
+ 7. **Open it** — launch the saved file in the default browser with `open` (see *Showing the result*). Then tell the user the path and state which design + richness level you chose (one line), so they can redirect.
25
+
26
+ ## Design Selection
27
+ **60+ brand design systems** live in `designs/` (full list with category + accent + one-liner in `designs/INDEX.md`). Pick one per request:
28
+
29
+ 1. **Explicit request wins.** If the user names a brand ("Toss 스타일로", "Linear처럼", "apple로"), use that file directly.
30
+ 2. **Otherwise infer** from the content's domain + desired feel. Skim INDEX.md and match by category:
31
+
32
+ | Content / vibe | Good-fit categories & examples (slug) |
33
+ |---|---|
34
+ | Dense data, dashboards, reports, admin, B2B, 회의·FGI·CS 정리 | `developer-tools` / `backend-devops` / `productivity` — Ant Design (`alipay`), IBM Carbon (`ibm`), Vercel Geist (`vercel`), Linear (`linear.app`), MongoDB (`mongodb`), Sanity (`sanity`) |
35
+ | Narrative / showcase / pitch / vision / 발표·제안 | `consumer-tech` / design-tools — Apple HIG (`apple`), Airbnb (`airbnb`), Framer (`framer`), Figma (`figma`) |
36
+ | Money / trust / 금융·핀테크 | `fintech` — Toss (`toss`), Alipay (`alipay`), banksalad (`banksalad`), kakaobank (`kakaobank`), kakaopay (`kakaopay`), wise (`wise`) |
37
+ | AI product / model / 연구 | `ai` — Cursor (`cursor`), ElevenLabs (`elevenlabs`), Mistral (`mistral.ai`), Cohere (`cohere`), Upstage (`upstage`) |
38
+ | Commerce / 쇼핑·커머스 | `ecommerce` / consumer — Coupang (`coupang`), Gmarket (`gmarket`), zigzag (`zigzag`), Karrot (`karrot`) |
39
+ | Korean public / 정부·공공 | `government` — KRDS (`krds`) |
40
+
41
+ 3. **Default when unclear:** Apple (`apple`) for narrative/showcase, Ant Design (`alipay`) for dense documents — the safe, legible baselines.
42
+
43
+ **Depth caveat:** some entries are full UI systems (tokens + components — e.g. `apple`, `alipay`, `ibm`, `vercel`, `mongodb`, `sanity`), others are brand-asset kits (logo + palette + voice, lighter on component specs — e.g. `cohere`, `elevenlabs`, `mistral.ai`). For laying out a document prefer a full UI system; reach for a brand-asset kit when the user wants that brand's *identity* (color/logo/voice) more than its components.
44
+
45
+ ## Minimal vs Rich (motion / interaction)
46
+ **Default: minimal & static.** Clean layout, no JS, at most subtle CSS hover/transition allowed by the DESIGN.md Motion section.
47
+
48
+ Escalate to interaction/animation ONLY when at least one is true:
49
+ - The user explicitly asks ("인터랙티브", "애니메이션", "동적으로", "발표용").
50
+ - The content genuinely benefits — e.g.:
51
+ - Long document → sticky table of contents, smooth-scroll, collapsible sections.
52
+ - Many items, steps, or a timeline → scroll-reveal / progressive disclosure.
53
+ - Tabular or comparison data → sortable/filterable table or tabs.
54
+ - Showcase content (e.g. `apple`, `framer`) → tasteful scroll-driven section reveals.
55
+
56
+ Keep it tasteful and on-brand: follow the chosen DESIGN.md **Motion & Easing** (Ant = calm ~0.2–0.3s `cubic-bezier(0.645,0.045,0.355,1)`, never bouncy; Apple = slow, confident, pause-heavy). When in doubt, less.
57
+
58
+ ### Red flags — STOP, you're over-decorating
59
+ - Adding animation to a one-page summary the user just wants to scan.
60
+ - JS that doesn't change comprehension.
61
+ - Motion that fights the brand's calm.
62
+
63
+ All of these mean: strip it back to static.
64
+
65
+ ## Showing the result
66
+ After saving, always open the file in the default browser with the OS `open` command:
67
+ ```bash
68
+ open "<absolute path>.html"
69
+ ```
70
+ Just `open` — don't branch on chrome-devtools / agent-browser. The saved `.html` is the deliverable; if `open` errors, report the path and move on.
71
+
72
+ ## Output requirements
73
+ - One file, fully self-contained (inline CSS; JS only if richness genuinely calls for it).
74
+ - Responsive and readable; semantic HTML.
75
+ - Faithful to the DESIGN.md tokens — colors, type scale, border-radius, spacing, shadows. No invented hexes or off-brand fonts.
76
+ - Preserve the source meaning and language; summarize/structure, don't fabricate.
77
+ - **Credit the design.** Record which brand design system was used, in two places:
78
+ 1. A discreet, on-brand **footer line** at the bottom of the page — e.g. *"Apple 디자인 시스템 기반"*, *"Styled with the Toss design system"* — in the brand's muted/secondary text tone so it never competes with the content.
79
+ 2. An **HTML comment at the very top** for traceability: `<!-- design: <slug> · designs/<slug>.DESIGN.md · generated by to-html -->`.
80
+
81
+ ## Catalog source & adding a brand
82
+ The 61 files come from **oh-my-design.kr/design-systems** (`omd` format; mirror of github.com/kwakseongjae/oh-my-design → `design-md/<slug>/DESIGN.md`). The repo carries ~170 brands total, so more can be pulled in.
83
+ To add one: copy its `DESIGN.md` into `designs/` as `<slug>.DESIGN.md`, then regenerate `designs/INDEX.md` (parse each file's frontmatter: `name`, `category`, `primary_color`, `ds.name`/`ds.description`). No SKILL.md change needed unless you want a new example row in *Design Selection*.
@@ -0,0 +1,74 @@
1
+ # DESIGN.md 카탈로그 (62)
2
+
3
+ `to-html` 스킬이 디자인을 고를 때 읽는 색인. 사용자가 브랜드를 명시하면 그 파일을, 아니면 콘텐츠 성격에 맞는 브랜드를 아래에서 고른다. 고른 뒤 해당 `designs/<file>`을 **전부 읽고** 그 토큰/컴포넌트/보이스/모션을 따른다.
4
+
5
+ 출처: https://oh-my-design.kr/design-systems · 원본 레포 github.com/kwakseongjae/oh-my-design (`omd` 포맷)
6
+
7
+ | Category | Brand | File | Accent | Design system / 설명 |
8
+ |---|---|---|---|---|
9
+ | ai | Cohere | `cohere.DESIGN.md` | #39594d | **Cohere Newsroom** — Cohere's press kit with logos, symbols, and media resources. |
10
+ | ai | ElevenLabs | `elevenlabs.DESIGN.md` | #000000 | **ElevenLabs Brand** — ElevenLabs brand guidelines covering logo, symbol, and product sub-brands. |
11
+ | ai | Mistral AI | `mistral.ai.DESIGN.md` | #ff7000 | **Mistral Brand** — Mistral AI's logo, colors, typography, and brand asset kit. |
12
+ | ai | OpenCode AI | `opencode.ai.DESIGN.md` | #000000 | **OpenCode Brand** — OpenCode's terminal-oriented logo and brand assets. |
13
+ | ai | Together AI | `together.ai.DESIGN.md` | #0f6fff | **Together AI Brand** — Together AI's logo, color, and typography brand guidelines. |
14
+ | ai | Upstage | `upstage.DESIGN.md` | #d2ff95 | **Upstage Brand Resource Center** — Upstage's brand resource hub — logo / symbol assets + IP rights statement. Token spec lives only in production CSS (Geist + Espeak proprietary face… |
15
+ | backend-devops | ClickHouse | `clickhouse.DESIGN.md` | #fff100 | **ClickHouse Design** — ClickHouse brand hub plus the Click UI design system and component library. |
16
+ | backend-devops | Hashicorp | `hashicorp.DESIGN.md` | #000000 | **Helios** — HashiCorp's design system documenting components and foundations. |
17
+ | backend-devops | Mongodb | `mongodb.DESIGN.md` | #00ed64 | **LeafyGreen** — MongoDB's open-source design system with an extensive React component library. |
18
+ | backend-devops | NHN Cloud | `nhncloud.DESIGN.md` | #125DE6 | **TOAST UI** — NHN's official open-source component library (TUI Grid/Editor/Calendar/Chart/Image-Editor), MIT-licensed under the nhn GitHub org and documented at… |
19
+ | backend-devops | PostHog | `posthog.DESIGN.md` | #1d4aff | **PostHog Brand Assets** — PostHog's public handbook brand, logo, and illustration guidelines. |
20
+ | backend-devops | Sanity | `sanity.DESIGN.md` | #f03e2f | **Sanity UI** — Sanity's accessible React toolkit for building apps with design tokens. |
21
+ | backend-devops | Supabase | `supabase.DESIGN.md` | #3ecf8e | **Supabase Brand Assets** — Supabase's brand guidelines with logos and integration button specs. |
22
+ | consumer-tech | Airbnb | `airbnb.DESIGN.md` | #ff5a5f | **Airbnb Brand Hub** — Airbnb's brand guidelines hub with logo, color, and visual identity rules. |
23
+ | consumer-tech | Apple | `apple.DESIGN.md` | #000000 | **Human Interface Guidelines** — Apple's official design guidelines for iOS, macOS, watchOS, and visionOS. |
24
+ | consumer-tech | Gogolook | `gogolook.DESIGN.md` | #0CD25F | **Whoscall Brand Guidelines** — Whoscall's official brand page — logo, the documented brand green #0CD25F, and usage guidelines. |
25
+ | consumer-tech | IBM | `ibm.DESIGN.md` | #0f62fe | **Carbon** — IBM's open-source design system with React, Angular, Vue, and Web Components. |
26
+ | consumer-tech | Karrot | `karrot.DESIGN.md` | #ff7e36 | **SEED Design** — Karrot (Daangn)'s open-source design system for marketplace apps. |
27
+ | consumer-tech | LINE | `line.DESIGN.md` | #06c755 | **LINE Design System** — LINE's shared design system for products across the LINE family. |
28
+ | consumer-tech | Naver | `naver.DESIGN.md` | #000000 | **NAVER Brand Resource** — NAVER Corp's official brand guide — logo usage, NAVER Green #03C75A, and identity rules. |
29
+ | consumer-tech | Pinterest | `pinterest.DESIGN.md` | #e60023 | **Gestalt** — Pinterest's open-source React component library with tokens and foundations. |
30
+ | consumer-tech | SOCAR | `socar.DESIGN.md` | #000000 | **SOCAR Design** — SOCAR's design system hub — Space Frame, SOCAR Blue, Sandoll Gothic Neo2 + Avenir typography, and mobility-flow component patterns. |
31
+ | consumer-tech | Spotify | `spotify.DESIGN.md` | #1ed760 | **Encore** — Spotify's dark, content-first music UI — near-black surfaces, a singular Spotify Green accent, pill/circle geometry, and the Circular/CircularSp ty… |
32
+ | consumer-tech | Uber | `uber.DESIGN.md` | #000000 | **Base Web** — Uber's React implementation of Base — a living component system. |
33
+ | consumer-tech | Yanolja | `yanolja.DESIGN.md` | #000000 | **Yanolja Brand Center** — Yanolja's official brand center — visual identity inspired by the Multiverse of Dreams. |
34
+ | consumer-tech | 강남언니 | `gangnamunni.DESIGN.md` | #d54300 | **Gangnamunni Blog** — Healience design team blog — the Cell + Welchis two-system architecture behind Gangnamunni's medical-platform UI. |
35
+ | consumer-tech | 여기어때 | `yeogiotte.DESIGN.md` | #000000 | **여기어때 Design Library** — 여기어때 디자인 라이브러리 — A Visual Language for Travel. Foundations, components, and tokens. |
36
+ | design-tools | Airtable | `airtable.DESIGN.md` | #fcb400 | **Airtable Trademark Guidelines** — Airtable's trademark usage and brand guidelines. |
37
+ | design-tools | Clay | `clay.DESIGN.md` | #ffd23f | **Clay Newsroom** — Clay's official press kit and co-branding guidelines. |
38
+ | design-tools | Figma | `figma.DESIGN.md` | #a259ff | **Figma Brand Guidelines** — Figma's official trademark and brand usage guidelines with logo downloads. |
39
+ | design-tools | Framer | `framer.DESIGN.md` | #0055ff | **Framer Brand Guidelines** — Framer's brand and trademark guidelines with logo rules and color palette. |
40
+ | design-tools | Miro | `miro.DESIGN.md` | #ffd02f | **Mirotone** — Miro's CSS component library for apps built on the Miro platform. |
41
+ | developer-tools | Cursor | `cursor.DESIGN.md` | #000000 | **Cursor Brand** — Cursor's brand guidelines with logos, icons, and naming conventions. |
42
+ | developer-tools | Expo | `expo.DESIGN.md` | #000020 | **Expo Brand** — Expo logo/wordmark trademark and usage guidelines. |
43
+ | developer-tools | Raycast | `raycast.DESIGN.md` | #ff6363 | **Raycast Brand** — Raycast's brand guidelines with colors, logos, and asset kit. |
44
+ | developer-tools | Sendbird | `sendbird.DESIGN.md` | #742DDD | **Sendbird UIKit** — Sendbird's official chat UIKit — a documented, token-driven conversation-UI system (React, iOS, Android, React Native) with named color sets, messa… |
45
+ | developer-tools | Superhuman | `superhuman.DESIGN.md` | #5840ff | **Superhuman Media Assets** — Superhuman's press and brand asset kit. |
46
+ | developer-tools | velog | `velog.DESIGN.md` | #12B886 | **velog (open source)** — velog's production frontend is fully open-source (MIT); its design tokens live in src/lib/styles (themes.ts + palette.ts), built on the Open Color … |
47
+ | developer-tools | Vercel | `vercel.DESIGN.md` | #000000 | **Geist** — Vercel's design system with 50+ components, foundations, and brand resources. |
48
+ | ecommerce | Coupang | `coupang.DESIGN.md` | #000000 | **Coupang Media Assets** — Coupang's official media-asset brand guidelines — logo usage, sizing, and attribution rules. |
49
+ | ecommerce | Gmarket | `gmarket.DESIGN.md` | #ffd200 | **Gmarket Sans** — Gmarket's SIL OFL brand typeface — 3 weights, TTF/OTF, 11,172 KR glyphs. First-party font artifact from a 25-year-old open marketplace; backing 247… |
50
+ | ecommerce | ZIGZAG | `zigzag.DESIGN.md` | #fa6ee3 | **ZIGZAG Tech / Brunch** — Kakaostyle / ZIGZAG's brand & design articles — the ZDS (ZIGZAG Design System) rearchitecture and the 2021 cool-pink rebrand. |
51
+ | education | Hahow | `hahow.DESIGN.md` | #00CCB4 | **hahow-design** — Hahow's open-source design-system theme — Primary/Secondary token scales (Primary 500 #00ccb4). |
52
+ | fintech | Alipay | `alipay.DESIGN.md` | #1677FF | **Ant Design** — The open-source enterprise design system born inside Ant Group (Alipay's parent), now the most influential Chinese design language and one of the m… |
53
+ | fintech | Banksalad | `banksalad.DESIGN.md` | #04c584 | **Banksalad GitHub** — Banksalad's public GitHub org including styleguide repos and BPL (Banksalad Product Library) reference material. |
54
+ | fintech | Coinone | `coinone.DESIGN.md` | #006BD6 | **Coinone Brand Guideline** — Official BI/brand guideline (v4.0) — Coinone Blue color system, signature logo lockups, clear-space rules. |
55
+ | fintech | Hyundai Card | `hyundaicard.DESIGN.md` | #000000 | **Hyundai Card Design Library** — Hyundai Card's official Design Library — the brand's design philosophy, the proprietary Youandi typeface, and visual identity. |
56
+ | fintech | KakaoBank | `kakaobank.DESIGN.md` | #000000 | **KakaoBank Brand Resource** — KakaoBank Brand Identity Guidelines V2.0 — logo system, KakaoBank Yellow #FFE300, downloadable CI assets. |
57
+ | fintech | KakaoPay | `kakaopay.DESIGN.md` | #ffeb00 | **KakaoPay Story** — KakaoPay's design narrative blog — 3 pillars (Color · Icon · Type), the 3:1 contrast accessibility policy, and the KPDS internal design system cont… |
58
+ | fintech | Money Forward | `money-forward.DESIGN.md` | #3B7DE9 | **Money Forward Cloud UI** — Money Forward's open-source React component library and theme tokens for the Money Forward Cloud business suite — buttons, forms, and a typed style… |
59
+ | fintech | Toss | `toss.DESIGN.md` | #0064ff | **TDS** — Toss's mobile design system — 40+ components, tokens, and hooks. |
60
+ | fintech | Wise | `wise.DESIGN.md` | #9fe870 | **Wise Design** — Wise's design system covering foundations, components, patterns, and tone of voice. |
61
+ | government | KRDS | `krds.DESIGN.md` | #000000 | **KRDS — Korea Republic Design System** — 행정안전부 주관 범정부 통합 디자인 시스템. Government Blue #256EF4, Pretendard GOV, WCAG/KWCAG 2.2 a11y-first tokens and components. |
62
+ | productivity | freee | `freee.DESIGN.md` | #005bac | **Vibes** — freee's open-source design system with accessibility-focused components. |
63
+ | productivity | Kdan Mobile | `kdan.DESIGN.md` | #00DC87 | **kdan-ui** — Kdan's open-source UI token library (kdanGreen brand token + neutral scale + semantic colors). |
64
+ | productivity | Linear | `linear.app.DESIGN.md` | #5e6ad2 | **Linear Brand** — Linear's brand guidelines with wordmark, logomark, and color specifications. |
65
+ | productivity | Remember | `remember.DESIGN.md` | #000000 | **Remember UI** — Remember (drama&company) UI library — public Storybook deploy with components for the business-card / B2B networking product. |
66
+ | productivity | Resend | `resend.DESIGN.md` | #000000 | **Resend Brand** — Resend's brand guidelines with wordmark, icons, and naming rules. |
67
+ | productivity | Wanted | `wanted.DESIGN.md` | #0066ff | **Wanted Montage** — Wanted's Montage design system docs — components, foundations, Wanted Sans, and the brandcenter resource hub. |
68
+ | productivity | Zapier | `zapier.DESIGN.md` | #ff4f00 | **Zapier Brand** — Zapier's official brand guidelines 1.0. |
69
+ | saas | Channel Talk | `channeltalk.DESIGN.md` | #4f46e5 | **Bezier** — Channel Talk's open-source design system — Bezier (MIT). Inter + Noto KR/JP type stacks, token/component/icon packages, marketing-vs-product type c… |
70
+ | saas | SmartHR | `smarthr.DESIGN.md` | #00C4CC | **SmartHR Design System** — SmartHR's fully public, governance-driven design system — primitive and semantic tokens, accessibility-first components, and inclusive UI guideline… |
71
+
72
+ ## 카테고리 분포
73
+
74
+ consumer-tech(14) · fintech(9) · backend-devops(7) · developer-tools(7) · productivity(7) · ai(6) · design-tools(5) · ecommerce(3) · saas(2) · education(1) · government(1)