Skip to content

Commit 40ee29b

Browse files
authored
docs: update landing copy, add trajectory section, refresh README (#33)
* docs(landing): update copy and add trajectory section Text updates: - Hero: "Define rules once. Compile them everywhere." - Hero sub: local-first CLI messaging, no cloud/accounts - Problem title: "Every AI tool wants its own rule file." - Problem sub: explicit editor-to-file mapping - Compile flow: "Every editor stays in sync." - Blocks label/title/sub: reworded for clarity - CTA: "Stop duplicating rules across editors." - Footer: updated tagline New section: - Trajectory (Now → Next → Future) between social proof and CTA * docs: update README copy, add bridges table, replace Amp with Copilot * chore: add changeset for landing copy update * chore: expand changeset description
1 parent 59169de commit 40ee29b

4 files changed

Lines changed: 243 additions & 52 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
"dev-workflows": patch
3+
---
4+
5+
Landing page copy update and README refresh
6+
7+
- Update hero headline, subtitle, and CTA text
8+
- Rewrite problem section heading and description
9+
- Update block cards descriptions (typescript-strict, react-conventions, testing-basics)
10+
- Add trajectory section with roadmap (v0.2, v0.3, v1.0)
11+
- Update CTA section heading and install command description
12+
- Update footer tagline
13+
- Update README with new project description, commands table, rule blocks, and bridges
14+
- Replace Amp bridge with VS Code Copilot in README bridges table

README.md

Lines changed: 69 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,69 +4,98 @@
44
[![license](https://img.shields.io/npm/l/dev-workflows)](./LICENSE)
55
[![docs](https://img.shields.io/badge/docs-dev--workflows.com-blue)](https://docs.dev-workflows.com)
66

7+
Define rules once. Compile them everywhere.
78

8-
> Define AI coding rules once. Compile to CLAUDE.md, .cursor/rules, GEMINI.md.
9+
A local-first CLI to define AI coding rules and compile them for every editor and agent.
910

10-
AI coding tools (Claude Code, Cursor, Gemini CLI) each use different config files for project rules. dev-workflows lets you define rules once in YAML and compile them to each tool's native format. No duplication, no drift.
11+
---
1112

12-
## Quick start
13+
## Quick Start
1314

1415
```bash
1516
npx dev-workflows init
16-
devw add typescript-strict
17+
devw add react-conventions
1718
devw compile
1819
```
1920

20-
Requires Node.js >= 22.
21+
---
2122

22-
## Usage
23+
## What it does
2324

24-
```bash
25-
devw init # set up .dwf/ in your project
26-
devw add typescript-strict # install a rule block
27-
devw compile # generate CLAUDE.md, .cursor/rules, GEMINI.md
2825
```
29-
30-
## What it generates
31-
32-
Running `devw compile` produces tool-specific files with your rules between markers:
33-
34-
```md
35-
<!-- BEGIN dev-workflows -->
36-
- Never use `any`. Use `unknown` when the type is truly unknown.
37-
- Always declare explicit return types on exported functions.
38-
- Prefer union types over enums. Use `as const` objects when you need runtime values.
39-
<!-- END dev-workflows -->
26+
.dwf/rules/*.yml → devw compile → CLAUDE.md
27+
.cursor/rules
28+
GEMINI.md
4029
```
4130

42-
Content outside the markers is preserved — your manual notes stay intact.
43-
44-
## Available blocks
31+
You define rules in YAML. The compiler generates each editor's native format. Change a rule, recompile — every editor stays in sync.
4532

46-
| Block | Description |
47-
|-------|-------------|
48-
| `typescript-strict` | Strict TypeScript conventions (no any, explicit returns) |
49-
| `react-conventions` | Hooks rules, component patterns, naming |
50-
| `nextjs-approuter` | App Router patterns, RSC, server actions |
51-
| `tailwind` | Utility-first CSS conventions and design tokens |
52-
| `testing-basics` | Test naming, AAA pattern, mock boundaries |
53-
| `supabase-rls` | Row-Level Security enforcement and auth patterns |
33+
---
5434

5535
## Commands
5636

5737
| Command | Description |
5838
|---------|-------------|
59-
| `devw init` | Initialize config in current project |
60-
| `devw compile` | Compile rules to editor-specific formats |
61-
| `devw add <block>` | Install a rule block |
62-
| `devw remove <block>` | Remove an installed block |
63-
| `devw list` | List available blocks and rules |
64-
| `devw doctor` | Validate configuration |
39+
| `devw init` | Initialize a `.dwf/` ruleset in your project |
40+
| `devw add <block>` | Install a prebuilt rule block |
41+
| `devw remove <block>` | Remove a rule block |
42+
| `devw compile` | Generate editor-specific rule files |
43+
| `devw doctor` | Validate config and detect rule drift |
44+
| `devw list rules` | List all active rules |
45+
| `devw list blocks` | List installed blocks |
46+
| `devw list tools` | List configured editors |
47+
48+
---
49+
50+
## Rule Blocks
51+
52+
Prebuilt rule blocks you can stack. Install with `devw add <block>`.
53+
54+
| Block | Purpose |
55+
|-------|---------|
56+
| `typescript-strict` | Enforces strict TypeScript patterns |
57+
| `react-conventions` | Common React component and hook rules |
58+
| `nextjs-approuter` | Next.js App Router best practices |
59+
| `tailwind` | Utility-first styling conventions |
60+
| `supabase-rls` | Database security and RLS rules |
61+
| `testing-basics` | Test naming and structure rules |
62+
63+
---
64+
65+
## Bridges
66+
67+
Bridges generate editor-compatible rule files. One adapter per tool.
68+
69+
| Tool | Output |
70+
|------|--------|
71+
| Claude Code | `CLAUDE.md` |
72+
| Cursor | `.cursor/rules/devworkflows.mdc` |
73+
| Gemini CLI | `GEMINI.md` |
74+
| Windsurf | `.windsurfrules` |
75+
| VS Code Copilot | `.github/copilot-instructions.md` |
76+
77+
---
78+
79+
## Why
80+
81+
- Every AI coding tool requires rules in a different format.
82+
- Maintaining the same rules in three files means they drift apart.
83+
- dev-workflows makes your rules a single source of truth.
84+
85+
---
86+
87+
## Philosophy
88+
89+
- Local-first
90+
- Source over output
91+
- No accounts. No cloud.
92+
93+
---
6594

6695
## Contributing
6796

68-
See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
97+
Issues and PRs welcome. If you find a bug or have an idea, [open an issue](https://github.com/gpolanco/dev-workflows/issues).
6998

7099
## License
71100

72-
MIT
101+
MIT

apps/landing/index.html

Lines changed: 98 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,6 +1219,68 @@
12191219
text-transform: uppercase;
12201220
letter-spacing: 0.06em;
12211221
}
1222+
/* ═══════════════════════════════════════
1223+
TRAJECTORY
1224+
═══════════════════════════════════════ */
1225+
.trajectory-section {
1226+
padding: 60px 24px 80px;
1227+
}
1228+
.trajectory-items {
1229+
display: flex;
1230+
align-items: flex-start;
1231+
justify-content: center;
1232+
gap: 0;
1233+
max-width: 800px;
1234+
margin: 0 auto;
1235+
}
1236+
.trajectory-item {
1237+
display: flex;
1238+
flex-direction: column;
1239+
align-items: center;
1240+
gap: 10px;
1241+
text-align: center;
1242+
flex: 1;
1243+
}
1244+
.trajectory-marker {
1245+
width: 12px; height: 12px;
1246+
border-radius: 50%;
1247+
border: 2px solid var(--border);
1248+
}
1249+
.trajectory-marker.now {
1250+
background: var(--accent);
1251+
border-color: var(--accent);
1252+
box-shadow: 0 0 10px rgba(34, 211, 126, 0.4);
1253+
}
1254+
.trajectory-marker.next {
1255+
background: transparent;
1256+
border-color: var(--accent-dim);
1257+
}
1258+
.trajectory-marker.future {
1259+
background: transparent;
1260+
border-color: var(--text-muted);
1261+
}
1262+
.trajectory-label {
1263+
font-family: var(--font-mono);
1264+
font-size: 10px;
1265+
font-weight: 600;
1266+
text-transform: uppercase;
1267+
letter-spacing: 0.1em;
1268+
color: var(--text-muted);
1269+
}
1270+
.trajectory-item:first-child .trajectory-label { color: var(--accent); }
1271+
.trajectory-text {
1272+
font-size: 13px;
1273+
line-height: 1.5;
1274+
color: var(--text-secondary);
1275+
max-width: 200px;
1276+
}
1277+
.trajectory-line {
1278+
height: 2px;
1279+
flex: 0 0 40px;
1280+
background: var(--border);
1281+
margin-top: 5px;
1282+
}
1283+
12221284
/* ═══════════════════════════════════════
12231285
CTA
12241286
═══════════════════════════════════════ */
@@ -1354,12 +1416,12 @@
13541416
Open source · MIT license
13551417
</div>
13561418
<h1>
1357-
Your AI rules are<br>
1358-
<span class="italic">scattered.</span> <span class="accent">Fix that.</span>
1419+
Define rules once.<br>
1420+
<span class="italic">Compile them</span> <span class="accent">everywhere.</span>
13591421
</h1>
13601422
<p class="hero-sub">
1361-
One source of truth for Claude Code, Cursor, and Gemini CLI.
1362-
Define rules in YAML. Compile to every editor.
1423+
A local-first CLI to manage AI coding rules across editors.<br>
1424+
No accounts. No cloud. Your rules live with your code.
13631425
</p>
13641426
<div class="hero-actions">
13651427
<a href="#problem" class="btn btn-primary">See how it works →</a>
@@ -1449,17 +1511,18 @@ <h1>
14491511
</div>
14501512

14511513
<div class="cf-bottom-text" style="animation: fade-up 0.6s 0.5s ease both;">
1452-
Change a rule, recompile. <strong>That's it.</strong>
1514+
Change a rule, recompile. <strong>Every editor stays in sync.</strong>
14531515
</div>
14541516
</section>
14551517

14561518
<!-- ═══════ THE PROBLEM (drift animation) ═══════ -->
14571519
<section class="drift-section reveal" id="problem">
14581520
<div class="drift-header">
14591521
<div class="section-label">The problem</div>
1460-
<div class="section-title">Watch your rules fall out of sync.</div>
1522+
<div class="section-title">Every AI tool wants its own rule file.</div>
14611523
<p class="section-sub">
1462-
Three editors. Three files. It starts fine. Then someone updates one and forgets the others.
1524+
Claude Code reads CLAUDE.md. Cursor reads .cursor/rules. Gemini reads GEMINI.md.
1525+
Same rules, three files — they always end up out of sync.
14631526
</p>
14641527
</div>
14651528

@@ -1641,10 +1704,10 @@ <h1>
16411704
<!-- ═══════ BLOCKS ═══════ -->
16421705
<section class="blocks-section reveal" id="blocks">
16431706
<div class="blocks-header">
1644-
<div class="section-label">Prebuilt blocks</div>
1645-
<div class="section-title">Don't start from zero.</div>
1707+
<div class="section-label">Prebuilt rule blocks</div>
1708+
<div class="section-title">Don't write rules from scratch.</div>
16461709
<p class="section-sub">
1647-
Install curated rule packs with one command. Each block adds battle-tested rules to your config.
1710+
Install curated rule packs with one command. Stack them — TypeScript + React + Tailwind in seconds.
16481711
</p>
16491712
</div>
16501713

@@ -1740,11 +1803,34 @@ <h1>
17401803
</div>
17411804
</section>
17421805

1806+
<!-- ═══════ TRAJECTORY ═══════ -->
1807+
<section class="trajectory-section reveal">
1808+
<div class="trajectory-items">
1809+
<div class="trajectory-item">
1810+
<div class="trajectory-marker now"></div>
1811+
<div class="trajectory-label">Now</div>
1812+
<div class="trajectory-text">Local-first rule compiler. Your rules live with your code.</div>
1813+
</div>
1814+
<div class="trajectory-line"></div>
1815+
<div class="trajectory-item">
1816+
<div class="trajectory-marker next"></div>
1817+
<div class="trajectory-label">Next</div>
1818+
<div class="trajectory-text">Auto-generate rules from your codebase. Watch mode. More bridges.</div>
1819+
</div>
1820+
<div class="trajectory-line"></div>
1821+
<div class="trajectory-item">
1822+
<div class="trajectory-marker future"></div>
1823+
<div class="trajectory-label">Future</div>
1824+
<div class="trajectory-text">Team sharing. Community rule registry. Visual rule editor.</div>
1825+
</div>
1826+
</div>
1827+
</section>
1828+
17431829
<!-- ═══════ CTA ═══════ -->
17441830
<section class="cta-section reveal">
17451831
<div class="cta-box">
17461832
<div class="cta-glow"></div>
1747-
<h2>Stop copy-pasting rules.</h2>
1833+
<h2>Stop duplicating rules across editors.</h2>
17481834
<p>Get started in under 30 seconds.</p>
17491835
<div class="cta-install" onclick="copyCta(this)">
17501836
<span class="dollar">$</span> npx dev-workflows init
@@ -1765,7 +1851,7 @@ <h2>Stop copy-pasting rules.</h2>
17651851

17661852
<!-- ═══════ FOOTER ═══════ -->
17671853
<footer>
1768-
<div>dev-workflows — Write once, compile everywhere.</div>
1854+
<div>dev-workflows — Define rules once. Compile them everywhere.</div>
17691855
<div class="footer-links">
17701856
<a href="https://github.com/gpolanco/dev-workflows" target="_blank">GitHub</a>
17711857
<a href="https://www.npmjs.com/package/dev-workflows" target="_blank">npm</a>

apps/landing/styles/cta.css

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,65 @@
1+
/* ═══════════════════════════════════════
2+
TRAJECTORY
3+
═══════════════════════════════════════ */
4+
.trajectory-section {
5+
padding: 60px 24px 80px;
6+
}
7+
.trajectory-items {
8+
display: flex;
9+
align-items: flex-start;
10+
justify-content: center;
11+
gap: 0;
12+
max-width: 800px;
13+
margin: 0 auto;
14+
}
15+
.trajectory-item {
16+
display: flex;
17+
flex-direction: column;
18+
align-items: center;
19+
gap: 10px;
20+
text-align: center;
21+
flex: 1;
22+
}
23+
.trajectory-marker {
24+
width: 12px; height: 12px;
25+
border-radius: 50%;
26+
border: 2px solid var(--border);
27+
}
28+
.trajectory-marker.now {
29+
background: var(--accent);
30+
border-color: var(--accent);
31+
box-shadow: 0 0 10px rgba(34, 211, 126, 0.4);
32+
}
33+
.trajectory-marker.next {
34+
background: transparent;
35+
border-color: var(--accent-dim);
36+
}
37+
.trajectory-marker.future {
38+
background: transparent;
39+
border-color: var(--text-muted);
40+
}
41+
.trajectory-label {
42+
font-family: var(--font-mono);
43+
font-size: 10px;
44+
font-weight: 600;
45+
text-transform: uppercase;
46+
letter-spacing: 0.1em;
47+
color: var(--text-muted);
48+
}
49+
.trajectory-item:first-child .trajectory-label { color: var(--accent); }
50+
.trajectory-text {
51+
font-size: 13px;
52+
line-height: 1.5;
53+
color: var(--text-secondary);
54+
max-width: 200px;
55+
}
56+
.trajectory-line {
57+
height: 2px;
58+
flex: 0 0 40px;
59+
background: var(--border);
60+
margin-top: 5px;
61+
}
62+
163
/* ═══════════════════════════════════════
264
CTA
365
═══════════════════════════════════════ */

0 commit comments

Comments
 (0)