farmwork 1.1.0 → 1.4.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/README.md +36 -10
- package/package.json +1 -1
- package/src/doctor.js +26 -5
- package/src/init.js +1070 -9
- package/src/status.js +8 -0
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ npx farmwork init
|
|
|
33
33
|
4. **Autonomously Issue Tracking** - Using beads (`bd`) for full visibility
|
|
34
34
|
5. **Living Audits** - Documents that track ongoing concerns
|
|
35
35
|
6. **Plan & Implement** - You describe the outcome, the rest is handled, tracked and audited
|
|
36
|
-
7. **Idea Garden & Compost** - Pre-plan creative stage
|
|
36
|
+
7. **Idea Garden & Compost** - Pre-plan creative stage with natural aging (ideas older than 60 days auto-compost)
|
|
37
37
|
|
|
38
38
|
### Phrase Commands
|
|
39
39
|
|
|
@@ -54,9 +54,27 @@ npx farmwork init
|
|
|
54
54
|
**Idea Phrases** (Pre-Plan Stage):
|
|
55
55
|
| Phrase | Action |
|
|
56
56
|
|--------|--------|
|
|
57
|
-
| `I have an idea for...` | Add new idea to `_AUDIT/GARDEN.md` |
|
|
57
|
+
| `I have an idea for...` | Add new idea to `_AUDIT/GARDEN.md` with planted date |
|
|
58
58
|
| `let's plan this idea...` | Graduate idea from GARDEN → create plan |
|
|
59
59
|
| `compost this...` | Move rejected idea to `_AUDIT/COMPOST.md` |
|
|
60
|
+
| `water the garden` | Generate 10 new ideas based on GARDEN and COMPOST |
|
|
61
|
+
|
|
62
|
+
**Idea Lifecycle:**
|
|
63
|
+
- **Fresh** (0-44 days) - New ideas ready to develop
|
|
64
|
+
- **Wilting** (45-60 days) - Ideas aging, marked ⚠️ during audits
|
|
65
|
+
- **Composted** (60+ days) - Auto-moved to COMPOST during "open the farm"
|
|
66
|
+
|
|
67
|
+
**Research Phrases** (Pre-Plan Stage):
|
|
68
|
+
| Phrase | Action |
|
|
69
|
+
|--------|--------|
|
|
70
|
+
| `let's research...` | Create or update research document in `_RESEARCH/` |
|
|
71
|
+
| `update research on...` | Refresh existing research with new findings |
|
|
72
|
+
| `show research on...` | Display research summary and staleness status |
|
|
73
|
+
|
|
74
|
+
**Research Lifecycle:**
|
|
75
|
+
- **Fresh** (0-14 days) - Research is current and reliable
|
|
76
|
+
- **Aging** (15-30 days) - Consider refreshing for major decisions
|
|
77
|
+
- **Stale** (30+ days) - Recommend updating before using for plans
|
|
60
78
|
|
|
61
79
|
### Slash Commands
|
|
62
80
|
|
|
@@ -66,7 +84,7 @@ npx farmwork init
|
|
|
66
84
|
|
|
67
85
|
### Agents
|
|
68
86
|
|
|
69
|
-
|
|
87
|
+
12 specialized agents included:
|
|
70
88
|
|
|
71
89
|
| Agent | Purpose |
|
|
72
90
|
|-------|---------|
|
|
@@ -81,14 +99,17 @@ npx farmwork init
|
|
|
81
99
|
| `i18n-locale-translator` | Translate UI text to locales |
|
|
82
100
|
| `storybook-maintainer` | Create/update Storybook stories |
|
|
83
101
|
| `idea-gardener` | Manage Idea Garden and Compost |
|
|
102
|
+
| `researcher` | Systematic research before planning |
|
|
84
103
|
|
|
85
104
|
### Recommended Workflow
|
|
86
105
|
|
|
87
106
|
1. **Start Session**: Run `open the farm` to audit current state
|
|
88
|
-
2. **
|
|
89
|
-
3. **
|
|
90
|
-
4. **
|
|
91
|
-
5. **
|
|
107
|
+
2. **Capture Ideas**: Use `I have an idea for...` to plant ideas in GARDEN
|
|
108
|
+
3. **Research**: Use `let's research...` to gather information before planning
|
|
109
|
+
4. **Plan Work**: Use `make a plan for...` for new features
|
|
110
|
+
5. **Implement**: Use `let's implement...` to execute with tracking
|
|
111
|
+
6. **Quality Check**: Run `count the herd` for full audit + dry run
|
|
112
|
+
7. **Ship**: Run `close the farm` or `/push` to push changes
|
|
92
113
|
|
|
93
114
|
You can `go to market` when you have a production-ready app with international users.
|
|
94
115
|
|
|
@@ -98,7 +119,7 @@ You can `go to market` when you have a production-ready app with international u
|
|
|
98
119
|
your-project/
|
|
99
120
|
├── CLAUDE.md # Main instructions & phrase commands
|
|
100
121
|
├── .claude/ # Claude Code configuration
|
|
101
|
-
│ ├── agents/ #
|
|
122
|
+
│ ├── agents/ # 12 specialized subagents
|
|
102
123
|
│ │ ├── the-farmer.md
|
|
103
124
|
│ │ ├── code-reviewer.md
|
|
104
125
|
│ │ ├── security-auditor.md
|
|
@@ -109,7 +130,8 @@ your-project/
|
|
|
109
130
|
│ │ ├── code-cleaner.md
|
|
110
131
|
│ │ ├── i18n-locale-translator.md
|
|
111
132
|
│ │ ├── storybook-maintainer.md
|
|
112
|
-
│ │
|
|
133
|
+
│ │ ├── idea-gardener.md
|
|
134
|
+
│ │ └── researcher.md
|
|
113
135
|
│ └── commands/ # User-invocable skills
|
|
114
136
|
│ └── push.md
|
|
115
137
|
├── _AUDIT/ # Living audit documents
|
|
@@ -123,6 +145,8 @@ your-project/
|
|
|
123
145
|
│ └── COMPOST.md # Rejected ideas archive
|
|
124
146
|
├── _PLANS/ # Implementation plans
|
|
125
147
|
│ └── FEATURE_NAME.md
|
|
148
|
+
├── _RESEARCH/ # Research documents (living docs)
|
|
149
|
+
│ └── TOPIC_NAME.md
|
|
126
150
|
├── .beads/ # Issue tracking
|
|
127
151
|
└── justfile # Navigation commands
|
|
128
152
|
```
|
|
@@ -152,7 +176,7 @@ If you enable Storybook (for React/Vue projects), the wizard will also ask for:
|
|
|
152
176
|
**Creates:**
|
|
153
177
|
- `CLAUDE.md` - Main instructions and phrase commands
|
|
154
178
|
- `.claude/` - Claude Code configuration directory
|
|
155
|
-
- `agents/` -
|
|
179
|
+
- `agents/` - 12 specialized subagents
|
|
156
180
|
- `commands/` - 1 user-invocable skill (/push)
|
|
157
181
|
- `_AUDIT/` - Living audit documents
|
|
158
182
|
- `FARMHOUSE.md` - Framework command center
|
|
@@ -164,6 +188,7 @@ If you enable Storybook (for React/Vue projects), the wizard will also ask for:
|
|
|
164
188
|
- `GARDEN.md` - Idea nursery (pre-plan stage)
|
|
165
189
|
- `COMPOST.md` - Rejected ideas archive
|
|
166
190
|
- `_PLANS/` - Implementation plans directory
|
|
191
|
+
- `_RESEARCH/` - Research documents directory
|
|
167
192
|
- `justfile` - Navigation and task commands
|
|
168
193
|
|
|
169
194
|
### `farmwork status`
|
|
@@ -199,6 +224,7 @@ farmwork doctor
|
|
|
199
224
|
- Core files (CLAUDE.md, .claude/, settings)
|
|
200
225
|
- Agents and commands configuration
|
|
201
226
|
- Audit system (_AUDIT/, FARMHOUSE.md, _PLANS/)
|
|
227
|
+
- Research system (_RESEARCH/)
|
|
202
228
|
- Navigation (justfile, just command)
|
|
203
229
|
- Issue tracking (beads)
|
|
204
230
|
- Security (.gitignore settings)
|
package/package.json
CHANGED
package/src/doctor.js
CHANGED
|
@@ -163,23 +163,44 @@ export async function doctor() {
|
|
|
163
163
|
checkExists(path.join(cwd, "_PLANS"), "_PLANS/ directory exists"),
|
|
164
164
|
);
|
|
165
165
|
|
|
166
|
+
// Research System
|
|
167
|
+
checks.push({ category: "Research System", emoji: "🔬", items: [] });
|
|
168
|
+
checks[3].items.push(
|
|
169
|
+
checkExists(path.join(cwd, "_RESEARCH"), "_RESEARCH/ directory exists"),
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
// Office System
|
|
173
|
+
checks.push({ category: "Office System", emoji: "🏢", items: [] });
|
|
174
|
+
checks[4].items.push(
|
|
175
|
+
checkExists(path.join(cwd, "_OFFICE"), "_OFFICE/ directory exists"),
|
|
176
|
+
);
|
|
177
|
+
checks[4].items.push(
|
|
178
|
+
checkExists(path.join(cwd, "_OFFICE", "CORE_LOOP.md"), "CORE_LOOP.md exists"),
|
|
179
|
+
);
|
|
180
|
+
checks[4].items.push(
|
|
181
|
+
checkExists(path.join(cwd, "_OFFICE", "ONBOARDING.md"), "ONBOARDING.md exists"),
|
|
182
|
+
);
|
|
183
|
+
checks[4].items.push(
|
|
184
|
+
checkExists(path.join(cwd, "_OFFICE", "USER_GUIDE.md"), "USER_GUIDE.md exists"),
|
|
185
|
+
);
|
|
186
|
+
|
|
166
187
|
// Navigation
|
|
167
188
|
checks.push({ category: "Navigation", emoji: "🐓", items: [] });
|
|
168
|
-
checks[
|
|
189
|
+
checks[5].items.push(
|
|
169
190
|
checkExists(path.join(cwd, "justfile"), "justfile exists"),
|
|
170
191
|
);
|
|
171
|
-
checks[
|
|
192
|
+
checks[5].items.push(checkCommand("just", "just command available"));
|
|
172
193
|
|
|
173
194
|
// Issue Tracking
|
|
174
195
|
checks.push({ category: "Issue Tracking", emoji: "🐷", items: [] });
|
|
175
|
-
checks[
|
|
196
|
+
checks[6].items.push(
|
|
176
197
|
checkExists(path.join(cwd, ".beads"), ".beads/ directory exists"),
|
|
177
198
|
);
|
|
178
|
-
checks[
|
|
199
|
+
checks[6].items.push(checkCommand("bd", "bd (beads) command available"));
|
|
179
200
|
|
|
180
201
|
// Security
|
|
181
202
|
checks.push({ category: "Security", emoji: "🐕", items: [] });
|
|
182
|
-
checks[
|
|
203
|
+
checks[7].items.push(checkGitignore(cwd));
|
|
183
204
|
|
|
184
205
|
let totalPassed = 0;
|
|
185
206
|
let totalFailed = 0;
|