@draig/lexis-two 1.0.2 → 1.0.4
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/package.json +7 -1
- package/.agents/plugins/marketplace.json +0 -21
- package/.claude-plugin/marketplace.json +0 -29
- package/.claude-plugin/plugin.json +0 -9
- package/.clinerules/lexis-two.md +0 -163
- package/.codex-plugin/plugin.json +0 -31
- package/.cursor/rules/lexis-two.mdc +0 -169
- package/.env.example +0 -8
- package/.github/FUNDING.yml +0 -1
- package/.github/copilot-instructions.md +0 -47
- package/.github/plugin/marketplace.json +0 -20
- package/.github/plugin/plugin.json +0 -16
- package/.github/workflows/deploy-site.yml +0 -53
- package/.github/workflows/test.yml +0 -29
- package/.kiro/steering/lexis-two.md +0 -167
- package/.nojekyll +0 -0
- package/.windsurf/rules/lexis-two.md +0 -163
- package/AGENTS.md +0 -163
- package/AUDIT.md +0 -74
- package/CNAME +0 -1
- package/SPECXIS.md +0 -576
- package/assets/benchmark-3model.svg +0 -21
- package/assets/lexis-two-complete.webp +0 -0
- package/assets/lexis-two-nobg.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/social-preview.png +0 -0
- package/benchmarks/README.md +0 -114
- package/benchmarks/arms/baseline.js +0 -2
- package/benchmarks/arms/caveman-SKILL.md +0 -67
- package/benchmarks/arms/caveman.js +0 -8
- package/benchmarks/arms/lexis-two.js +0 -10
- package/benchmarks/arms/ponytail.js +0 -6
- package/benchmarks/behavior.js +0 -58
- package/benchmarks/behavior.yaml +0 -40
- package/benchmarks/benchmark-local.py +0 -156
- package/benchmarks/benchmark-opencode-go.js +0 -294
- package/benchmarks/correctness.js +0 -294
- package/benchmarks/lib/aggregate-opencode-go.js +0 -103
- package/benchmarks/lib/load-env.js +0 -31
- package/benchmarks/lib/opencode-go-client.js +0 -151
- package/benchmarks/loc.js +0 -13
- package/benchmarks/opencode-go-models.json +0 -31
- package/benchmarks/promptfooconfig.yaml +0 -41
- package/benchmarks/prompts.json +0 -15
- package/benchmarks/render-opencode-go-report.js +0 -28
- package/benchmarks/results/2026-06-15-llama3.2-local.md +0 -76
- package/benchmarks/results/2026-06-16-opencode-go.md +0 -56
- package/benchmarks/results/opencode-go-2026-06-16-report.html +0 -226
- package/benchmarks/results/opencode-go-2026-06-16.json +0 -1339
- package/commands/lexis-two-audit.toml +0 -3
- package/commands/lexis-two-debt.toml +0 -3
- package/commands/lexis-two-help.toml +0 -3
- package/commands/lexis-two-plan.toml +0 -3
- package/commands/lexis-two-review.toml +0 -3
- package/commands/lexis-two-security.toml +0 -3
- package/commands/lexis-two.toml +0 -3
- package/docs/assets/lexis-two-nobg.png +0 -0
- package/docs/assets/logo.png +0 -0
- package/docs/assets/logo.svg +0 -4
- package/docs/portability.md +0 -147
- package/docs/site.md +0 -52
- package/examples/api-endpoint.md +0 -68
- package/examples/caching.md +0 -74
- package/examples/date-picker.md +0 -48
- package/examples/email-validation.md +0 -51
- package/examples/sorting.md +0 -42
- package/gemini-extension.json +0 -7
- package/opencode.json +0 -4
- package/pi-extension/index.js +0 -161
- package/pi-extension/package.json +0 -8
- package/pi-extension/test/extension.test.js +0 -89
- package/pi-extension/test/helpers.test.js +0 -35
- package/scripts/check-rule-copies.js +0 -82
- package/site/astro.config.mjs +0 -18
- package/site/package-lock.json +0 -4913
- package/site/package.json +0 -14
- package/site/public/CNAME +0 -1
- package/site/public/assets/lexis-two-nobg.png +0 -0
- package/site/public/assets/logo.png +0 -0
- package/site/public/assets/logo.svg +0 -4
- package/site/public/robots.txt +0 -4
- package/site/src/components/Adapt.astro +0 -33
- package/site/src/components/Benchmarks.astro +0 -232
- package/site/src/components/Commands.astro +0 -33
- package/site/src/components/Ecosystem.astro +0 -30
- package/site/src/components/Example.astro +0 -77
- package/site/src/components/Footer.astro +0 -28
- package/site/src/components/Header.astro +0 -87
- package/site/src/components/Hero.astro +0 -58
- package/site/src/components/Home.astro +0 -46
- package/site/src/components/Hosts.astro +0 -62
- package/site/src/components/Install.astro +0 -139
- package/site/src/components/LanguageSwitcher.astro +0 -82
- package/site/src/components/Philosophy.astro +0 -23
- package/site/src/components/Stacks.astro +0 -33
- package/site/src/components/Suggested.astro +0 -39
- package/site/src/data/opencode-go-benchmark.json +0 -230
- package/site/src/i18n/en.ts +0 -155
- package/site/src/i18n/es.ts +0 -158
- package/site/src/i18n/index.ts +0 -14
- package/site/src/layouts/Layout.astro +0 -114
- package/site/src/pages/benchmarks.astro +0 -4
- package/site/src/pages/es/benchmarks.astro +0 -4
- package/site/src/pages/es/index.astro +0 -10
- package/site/src/pages/index.astro +0 -10
- package/site/src/styles/global.css +0 -780
- package/site/tsconfig.json +0 -3
- package/tests/behavior.test.js +0 -80
- package/tests/commands.test.js +0 -40
- package/tests/copilot-plugin.test.js +0 -33
- package/tests/correctness.test.js +0 -191
- package/tests/gemini-extension.test.js +0 -78
- package/tests/hooks-windows.test.js +0 -48
- package/tests/hooks.test.js +0 -177
- package/tests/opencode-plugin.test.js +0 -64
package/SPECXIS.md
DELETED
|
@@ -1,576 +0,0 @@
|
|
|
1
|
-
# Specxis — Implementation Guide
|
|
2
|
-
|
|
3
|
-
> Spec-driven development layer for Lexis-Two.
|
|
4
|
-
> Inspired by OpenSpec and GitHub Spec Kit, built for the Lexis philosophy.
|
|
5
|
-
> Implement this guide in the `nitdraig/lexis-two` repository.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
Specxis adds a lightweight SDD (Spec-Driven Development) layer to Lexis-Two.
|
|
12
|
-
It persists agreements between developer and agent as Markdown files in the
|
|
13
|
-
repo, so context survives across sessions and chat resets.
|
|
14
|
-
|
|
15
|
-
The lazy hierarchy still applies first. Specxis only activates when a feature
|
|
16
|
-
is complex enough to warrant it.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## When to use Specxis
|
|
21
|
-
|
|
22
|
-
**Use it for:**
|
|
23
|
-
- Features touching 3+ files
|
|
24
|
-
- Anything requiring UX + backend coordination
|
|
25
|
-
- Ambiguous requirements that need alignment before coding
|
|
26
|
-
|
|
27
|
-
**Skip it for:**
|
|
28
|
-
- Bug fixes with a clear root cause
|
|
29
|
-
- Style or naming changes
|
|
30
|
-
- Adding tests to existing behavior
|
|
31
|
-
- Single-file changes with obvious scope
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Folder Convention (per project)
|
|
36
|
-
|
|
37
|
-
Create this structure in any project that uses Specxis:
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
.specxis/
|
|
41
|
-
active/
|
|
42
|
-
[feature-slug]/
|
|
43
|
-
proposal.md ← what to build and why (lazy check included)
|
|
44
|
-
spec.md ← requirements as MUST / SHOULD / MAY
|
|
45
|
-
tasks.md ← task list generated by /specxis-plan
|
|
46
|
-
review.md ← lexis-review findings (added on close)
|
|
47
|
-
archive/
|
|
48
|
-
[feature-slug]/ ← completed specs, immutable
|
|
49
|
-
debt.md ← consolidated // lexis: comments for this project
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## Files to Create
|
|
55
|
-
|
|
56
|
-
### 1. `templates/specxis/proposal.md`
|
|
57
|
-
|
|
58
|
-
```markdown
|
|
59
|
-
# Proposal: [feature-slug]
|
|
60
|
-
|
|
61
|
-
## Goal
|
|
62
|
-
One sentence — what does this feature do for the user?
|
|
63
|
-
|
|
64
|
-
## Lazy Check
|
|
65
|
-
Answer before writing any code:
|
|
66
|
-
- Does this need to exist? Could the requirement be met another way?
|
|
67
|
-
- Does stdlib, the framework, or an installed dep already cover it?
|
|
68
|
-
- What is the absolute minimum that satisfies the requirement?
|
|
69
|
-
|
|
70
|
-
## Context
|
|
71
|
-
- Affected domain / feature folder:
|
|
72
|
-
- Related existing files:
|
|
73
|
-
- Dependencies already installed that are relevant:
|
|
74
|
-
|
|
75
|
-
## Out of Scope (YAGNI)
|
|
76
|
-
Explicitly list what this proposal does NOT include.
|
|
77
|
-
|
|
78
|
-
## Open Questions
|
|
79
|
-
Anything that needs clarification before planning.
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### 2. `templates/specxis/spec.md`
|
|
83
|
-
|
|
84
|
-
```markdown
|
|
85
|
-
# Spec: [feature-slug]
|
|
86
|
-
|
|
87
|
-
> Status: draft | agreed | implementing | done
|
|
88
|
-
|
|
89
|
-
## Requirements
|
|
90
|
-
|
|
91
|
-
### MUST (non-negotiable)
|
|
92
|
-
- [ ]
|
|
93
|
-
|
|
94
|
-
### SHOULD (strong preference, can deviate with // lexis: comment)
|
|
95
|
-
- [ ]
|
|
96
|
-
|
|
97
|
-
### MAY (optional, implement only if trivial)
|
|
98
|
-
- [ ]
|
|
99
|
-
|
|
100
|
-
## Constraints
|
|
101
|
-
- Performance:
|
|
102
|
-
- Security:
|
|
103
|
-
- Accessibility:
|
|
104
|
-
- TypeScript: strict — no any, as, or ! without // lexis: explanation
|
|
105
|
-
|
|
106
|
-
## Acceptance Criteria
|
|
107
|
-
How do we know this is done?
|
|
108
|
-
- [ ]
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### 3. `templates/specxis/tasks.md`
|
|
112
|
-
|
|
113
|
-
```markdown
|
|
114
|
-
# Tasks: [feature-slug]
|
|
115
|
-
|
|
116
|
-
> Generated by /specxis-plan. Each task maps to one file or one function.
|
|
117
|
-
> Do not start implementing until tasks are agreed.
|
|
118
|
-
|
|
119
|
-
## Tasks
|
|
120
|
-
|
|
121
|
-
- [ ] task-001:
|
|
122
|
-
- [ ] task-002:
|
|
123
|
-
- [ ] task-003:
|
|
124
|
-
|
|
125
|
-
## Implementation Notes
|
|
126
|
-
Decisions made during planning that affect implementation.
|
|
127
|
-
|
|
128
|
-
## Lexis Tags Added
|
|
129
|
-
// lexis: comments added during implementation (updated as work progresses).
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### 4. `templates/specxis/review.md`
|
|
133
|
-
|
|
134
|
-
```markdown
|
|
135
|
-
# Review: [feature-slug]
|
|
136
|
-
|
|
137
|
-
> Generated by /specxis-review on close.
|
|
138
|
-
|
|
139
|
-
## Summary
|
|
140
|
-
One sentence on overall quality.
|
|
141
|
-
|
|
142
|
-
## Spec Compliance
|
|
143
|
-
Did the implementation follow spec.md?
|
|
144
|
-
- MUST requirements met: yes / no / partial
|
|
145
|
-
- Deviations: list with // lexis: references
|
|
146
|
-
|
|
147
|
-
## Debt Registered
|
|
148
|
-
// lexis: comments added during this feature — moved to .specxis/debt.md.
|
|
149
|
-
|
|
150
|
-
## Next Steps
|
|
151
|
-
Recommended follow-up actions in priority order.
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## Commands to Create
|
|
157
|
-
|
|
158
|
-
All commands go in `.opencode/command/` (OpenCode) and `commands/` (Gemini CLI `.toml`).
|
|
159
|
-
|
|
160
|
-
### `.opencode/command/specxis-new.md`
|
|
161
|
-
|
|
162
|
-
```markdown
|
|
163
|
-
---
|
|
164
|
-
description: "Create a new Specxis spec folder for a feature"
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
Create the folder structure for a new spec.
|
|
168
|
-
|
|
169
|
-
Steps:
|
|
170
|
-
1. Ask for the feature slug if not provided (kebab-case, e.g. "user-auth")
|
|
171
|
-
2. Create `.specxis/active/[slug]/proposal.md` from `templates/specxis/proposal.md`
|
|
172
|
-
3. Apply the lazy check inline: ask "Does this need to exist? What's the minimum?"
|
|
173
|
-
4. Fill in what you know from the user's description — leave unknowns blank
|
|
174
|
-
5. Report the created path and ask the user to review the proposal before planning
|
|
175
|
-
|
|
176
|
-
Do not create spec.md or tasks.md yet — those come after proposal is agreed.
|
|
177
|
-
Respond in Spanish.
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### `.opencode/command/specxis-plan.md`
|
|
181
|
-
|
|
182
|
-
```markdown
|
|
183
|
-
---
|
|
184
|
-
description: "Read the active proposal and generate a task list using the lazy hierarchy"
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
Read `.specxis/active/[slug]/proposal.md` (ask for slug if multiple are active).
|
|
188
|
-
|
|
189
|
-
Apply the lazy hierarchy to every proposed piece:
|
|
190
|
-
1. Does this need to exist? → rule it out if not
|
|
191
|
-
2. Stdlib/native? → use it
|
|
192
|
-
3. Existing dep? → use it
|
|
193
|
-
4. One line? → make it one line
|
|
194
|
-
5. Only then: minimum build
|
|
195
|
-
|
|
196
|
-
Then:
|
|
197
|
-
1. Create `.specxis/active/[slug]/spec.md` from `templates/specxis/spec.md`
|
|
198
|
-
- Fill MUST / SHOULD / MAY from the proposal
|
|
199
|
-
2. Create `.specxis/active/[slug]/tasks.md` from `templates/specxis/tasks.md`
|
|
200
|
-
- Each task maps to exactly one file or one function
|
|
201
|
-
- Maximum 10 tasks — if more are needed, split into sub-specs
|
|
202
|
-
3. Report the task list and ask for approval before any implementation starts
|
|
203
|
-
|
|
204
|
-
Do not write any application code. Plan only.
|
|
205
|
-
Respond in Spanish.
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
### `.opencode/command/specxis-implement.md`
|
|
209
|
-
|
|
210
|
-
```markdown
|
|
211
|
-
---
|
|
212
|
-
description: "Implement the next unchecked task in the active spec"
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
Read `.specxis/active/[slug]/tasks.md` (ask for slug if multiple are active).
|
|
216
|
-
|
|
217
|
-
Find the first unchecked task (`- [ ]`).
|
|
218
|
-
|
|
219
|
-
Implement it following:
|
|
220
|
-
- spec.md MUST requirements strictly
|
|
221
|
-
- AGENTS.md rules (SOLID, KISS, no any/as/!, etc.)
|
|
222
|
-
- Lazy hierarchy — stop at the simplest solution that satisfies the spec
|
|
223
|
-
|
|
224
|
-
Mark the task as done (`- [x]`) in tasks.md after implementation.
|
|
225
|
-
Add `// lexis:` comments for any deviation from spec.md or any intentional simplification.
|
|
226
|
-
Update the "Lexis Tags Added" section in tasks.md.
|
|
227
|
-
|
|
228
|
-
Implement one task per run. Stop and report before moving to the next.
|
|
229
|
-
Respond in Spanish.
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### `.opencode/command/specxis-review.md`
|
|
233
|
-
|
|
234
|
-
```markdown
|
|
235
|
-
---
|
|
236
|
-
description: "Review implementation against the active spec and AGENTS.md"
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
Read `.specxis/active/[slug]/spec.md` and run `git diff HEAD`.
|
|
240
|
-
|
|
241
|
-
Evaluate:
|
|
242
|
-
1. **Spec compliance**: Are all MUST requirements met? List any gaps.
|
|
243
|
-
2. **SHOULD compliance**: Are deviations explained with // lexis: comments?
|
|
244
|
-
3. **AGENTS.md compliance**: SOLID, KISS, no any/as/!, loading/error/empty states
|
|
245
|
-
4. **Lazy check**: Anything added that wasn't in the spec? Anything that could be simpler?
|
|
246
|
-
5. **Tests**: New behavior covered by tests?
|
|
247
|
-
|
|
248
|
-
Write findings to `.specxis/active/[slug]/review.md`.
|
|
249
|
-
|
|
250
|
-
Format per finding:
|
|
251
|
-
- Severity: Critical / High / Medium / Low
|
|
252
|
-
- Location: file:line
|
|
253
|
-
- Issue and recommended fix
|
|
254
|
-
|
|
255
|
-
If the implementation is clean, say so directly — don't invent problems.
|
|
256
|
-
Respond in Spanish.
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### `.opencode/command/specxis-close.md`
|
|
260
|
-
|
|
261
|
-
```markdown
|
|
262
|
-
---
|
|
263
|
-
description: "Close a completed spec — archive it and sync debt"
|
|
264
|
-
---
|
|
265
|
-
|
|
266
|
-
Close the spec at `.specxis/active/[slug]/`.
|
|
267
|
-
|
|
268
|
-
Steps:
|
|
269
|
-
1. Verify all tasks in tasks.md are checked (`- [x]`)
|
|
270
|
-
2. Verify review.md exists and has no Critical or High findings open
|
|
271
|
-
3. Move `.specxis/active/[slug]/` to `.specxis/archive/[slug]/`
|
|
272
|
-
4. Collect all `// lexis:` comments added during this feature
|
|
273
|
-
5. Append them to `.specxis/debt.md` under a `## [slug] — [date]` heading
|
|
274
|
-
6. Report what was archived and what debt was registered
|
|
275
|
-
|
|
276
|
-
If unchecked tasks or open Critical/High findings exist: refuse to close and list what's blocking.
|
|
277
|
-
Respond in Spanish.
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### `.opencode/command/specxis-debt.md`
|
|
281
|
-
|
|
282
|
-
```markdown
|
|
283
|
-
---
|
|
284
|
-
description: "Sync all // lexis: comments from the codebase to .specxis/debt.md"
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
Scan the entire codebase for `// lexis:` comments:
|
|
288
|
-
|
|
289
|
-
```bash
|
|
290
|
-
grep -rn "lexis:" src --include="*.ts" --include="*.tsx" --include="*.js" --include="*.mjs"
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
Compare against `.specxis/debt.md`:
|
|
294
|
-
- Add any comments not yet registered
|
|
295
|
-
- Mark as "resolved" any that no longer exist in the code
|
|
296
|
-
|
|
297
|
-
Produce a prioritized ledger:
|
|
298
|
-
- **Immediate**: shortcuts causing pain or blocking features
|
|
299
|
-
- **Next sprint**: shortcuts with a known ceiling approaching
|
|
300
|
-
- **Backlog**: fine for now, revisit at scale
|
|
301
|
-
- **Permanent**: intentional, no action needed
|
|
302
|
-
|
|
303
|
-
Update `.specxis/debt.md` in place.
|
|
304
|
-
Respond in Spanish.
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
### `.opencode/command/specxis.md`
|
|
308
|
-
|
|
309
|
-
```markdown
|
|
310
|
-
---
|
|
311
|
-
description: "Show active specs and their status"
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
List all folders in `.specxis/active/`.
|
|
315
|
-
|
|
316
|
-
For each, show:
|
|
317
|
-
- Feature slug
|
|
318
|
-
- Status from spec.md (draft / agreed / implementing / done)
|
|
319
|
-
- Tasks: X/Y checked
|
|
320
|
-
- Has review.md: yes / no
|
|
321
|
-
|
|
322
|
-
Then list count of archived specs in `.specxis/archive/`.
|
|
323
|
-
Show open items in `.specxis/debt.md` by priority.
|
|
324
|
-
|
|
325
|
-
If `.specxis/` does not exist: suggest running `node scripts/specxis-init.js`.
|
|
326
|
-
Respond in Spanish.
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
## Script to Create
|
|
332
|
-
|
|
333
|
-
### `scripts/specxis-init.js`
|
|
334
|
-
|
|
335
|
-
```javascript
|
|
336
|
-
// scripts/specxis-init.js
|
|
337
|
-
// Initializes .specxis/ folder structure in the current project.
|
|
338
|
-
// Run with: node scripts/specxis-init.js
|
|
339
|
-
|
|
340
|
-
import fs from 'fs';
|
|
341
|
-
import path from 'path';
|
|
342
|
-
|
|
343
|
-
const dirs = [
|
|
344
|
-
'.specxis/active',
|
|
345
|
-
'.specxis/archive',
|
|
346
|
-
];
|
|
347
|
-
|
|
348
|
-
const debtTemplate = `# Specxis Debt Ledger
|
|
349
|
-
|
|
350
|
-
Consolidated // lexis: comments across all features.
|
|
351
|
-
Updated automatically by /specxis-debt and /specxis-close.
|
|
352
|
-
|
|
353
|
-
---
|
|
354
|
-
|
|
355
|
-
<!-- Entries added by specxis-close and specxis-debt commands -->
|
|
356
|
-
`;
|
|
357
|
-
|
|
358
|
-
for (const dir of dirs) {
|
|
359
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
360
|
-
console.log(`created ${dir}/`);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
const debtPath = '.specxis/debt.md';
|
|
364
|
-
if (!fs.existsSync(debtPath)) {
|
|
365
|
-
fs.writeFileSync(debtPath, debtTemplate);
|
|
366
|
-
console.log(`created ${debtPath}`);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
// Add .specxis/archive to .gitignore if not already there
|
|
370
|
-
// (active specs stay in git; archive is optional)
|
|
371
|
-
const gitignorePath = '.gitignore';
|
|
372
|
-
if (fs.existsSync(gitignorePath)) {
|
|
373
|
-
const content = fs.readFileSync(gitignorePath, 'utf8');
|
|
374
|
-
if (!content.includes('.specxis/archive')) {
|
|
375
|
-
fs.appendFileSync(gitignorePath, '\n# Specxis archived specs (optional)\n# .specxis/archive\n');
|
|
376
|
-
console.log('added .specxis/archive comment to .gitignore');
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
console.log('\nSpecxis initialized. Run /specxis-new to create your first spec.');
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
---
|
|
384
|
-
|
|
385
|
-
## Skills to Create
|
|
386
|
-
|
|
387
|
-
### `skills/specxis/SKILL.md`
|
|
388
|
-
|
|
389
|
-
```markdown
|
|
390
|
-
---
|
|
391
|
-
name: specxis
|
|
392
|
-
description: Activate spec-driven development mode — align on requirements before writing any code
|
|
393
|
-
---
|
|
394
|
-
|
|
395
|
-
You are now in Specxis mode. Before writing any code:
|
|
396
|
-
|
|
397
|
-
1. Check if `.specxis/active/` exists and has an open spec for this feature
|
|
398
|
-
2. If yes: read proposal.md and spec.md — follow them strictly
|
|
399
|
-
3. If no: suggest running /specxis-new for complex features (3+ files)
|
|
400
|
-
4. Apply the lazy hierarchy to every requirement before accepting it into the spec
|
|
401
|
-
5. Never implement beyond what spec.md defines (YAGNI)
|
|
402
|
-
6. Mark every deviation with // lexis: and update tasks.md
|
|
403
|
-
|
|
404
|
-
The spec is the contract. The code is the proof.
|
|
405
|
-
Respond in Spanish. All code, comments, JSDoc in English.
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
### `skills/specxis-plan/SKILL.md`
|
|
409
|
-
|
|
410
|
-
```markdown
|
|
411
|
-
---
|
|
412
|
-
name: specxis-plan
|
|
413
|
-
description: Generate a task list from a Specxis proposal using the lazy decision hierarchy
|
|
414
|
-
---
|
|
415
|
-
|
|
416
|
-
Read `.specxis/active/[slug]/proposal.md`.
|
|
417
|
-
|
|
418
|
-
Apply the lazy hierarchy to every proposed piece before accepting it into the plan.
|
|
419
|
-
Generate spec.md (MUST/SHOULD/MAY) and tasks.md (one task per file or function, max 10).
|
|
420
|
-
|
|
421
|
-
Do not write any application code. Plan only.
|
|
422
|
-
Ask for approval before implementation starts.
|
|
423
|
-
Respond in Spanish.
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
### `skills/specxis-review/SKILL.md`
|
|
427
|
-
|
|
428
|
-
```markdown
|
|
429
|
-
---
|
|
430
|
-
name: specxis-review
|
|
431
|
-
description: Review implementation against the active Specxis spec and AGENTS.md rules
|
|
432
|
-
---
|
|
433
|
-
|
|
434
|
-
Read `.specxis/active/[slug]/spec.md` and the current git diff.
|
|
435
|
-
|
|
436
|
-
Evaluate spec compliance (MUST/SHOULD), AGENTS.md compliance, and lazy check.
|
|
437
|
-
Write findings to `.specxis/active/[slug]/review.md`.
|
|
438
|
-
|
|
439
|
-
Never modify application code. Read-only analysis only.
|
|
440
|
-
Respond in Spanish.
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
---
|
|
444
|
-
|
|
445
|
-
## Gemini CLI Commands to Create
|
|
446
|
-
|
|
447
|
-
For each `.opencode/command/*.md` above, create a matching `.toml` in `commands/`:
|
|
448
|
-
|
|
449
|
-
```toml
|
|
450
|
-
# commands/specxis-new.toml
|
|
451
|
-
name = "specxis-new"
|
|
452
|
-
description = "Create a new Specxis spec folder for a feature"
|
|
453
|
-
skill = "../skills/specxis/SKILL.md"
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
Repeat for: `specxis-plan`, `specxis-implement`, `specxis-review`, `specxis-close`, `specxis-debt`, `specxis`.
|
|
457
|
-
|
|
458
|
-
---
|
|
459
|
-
|
|
460
|
-
## docs/specxis.md to Create
|
|
461
|
-
|
|
462
|
-
```markdown
|
|
463
|
-
# Specxis — Spec-Driven Development for Lexis
|
|
464
|
-
|
|
465
|
-
Specxis is the lightweight SDD layer built into Lexis-Two.
|
|
466
|
-
Inspired by OpenSpec and GitHub Spec Kit, adapted to the Lexis philosophy.
|
|
467
|
-
|
|
468
|
-
## When to use
|
|
469
|
-
|
|
470
|
-
| Situation | Use Specxis? |
|
|
471
|
-
|-----------|-------------|
|
|
472
|
-
| Feature touching 3+ files | Yes |
|
|
473
|
-
| UX + backend coordination | Yes |
|
|
474
|
-
| Ambiguous requirements | Yes |
|
|
475
|
-
| Bug fix with clear cause | No |
|
|
476
|
-
| Style or naming change | No |
|
|
477
|
-
| Adding tests to existing code | No |
|
|
478
|
-
|
|
479
|
-
## Workflow
|
|
480
|
-
|
|
481
|
-
```
|
|
482
|
-
/specxis-new → proposal.md (lazy check first)
|
|
483
|
-
/specxis-plan → spec.md + tasks.md
|
|
484
|
-
/specxis-implement → one task at a time
|
|
485
|
-
/specxis-review → review.md
|
|
486
|
-
/specxis-close → archive + debt sync
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
## Key principle
|
|
490
|
-
|
|
491
|
-
The lazy hierarchy applies to the spec itself.
|
|
492
|
-
Before adding a requirement to spec.md, ask: does it need to exist?
|
|
493
|
-
A good spec is short. A great spec is shorter.
|
|
494
|
-
|
|
495
|
-
## Integration with Lexis-One
|
|
496
|
-
|
|
497
|
-
When .specxis/active/ exists, Lexis-One reads it automatically.
|
|
498
|
-
No configuration needed — the folder is the signal.
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
---
|
|
502
|
-
|
|
503
|
-
## Roadmap Entry to Add
|
|
504
|
-
|
|
505
|
-
Add this to `README.md` after v0.4:
|
|
506
|
-
|
|
507
|
-
```markdown
|
|
508
|
-
### v0.5 — Specxis (Spec-Driven Development)
|
|
509
|
-
|
|
510
|
-
Lightweight SDD layer for complex features — inspired by OpenSpec and Spec Kit,
|
|
511
|
-
built for the Lexis philosophy: lazy check before every requirement.
|
|
512
|
-
|
|
513
|
-
- [ ] `.specxis/` folder convention and `scripts/specxis-init.js`
|
|
514
|
-
- [ ] Commands: `specxis`, `specxis-new`, `specxis-plan`, `specxis-implement`,
|
|
515
|
-
`specxis-review`, `specxis-close`, `specxis-debt`
|
|
516
|
-
- [ ] Skills: `specxis`, `specxis-plan`, `specxis-review`
|
|
517
|
-
- [ ] Templates: `templates/specxis/proposal.md`, `spec.md`, `tasks.md`, `review.md`
|
|
518
|
-
- [ ] `docs/specxis.md` — when to use SDD vs direct implementation
|
|
519
|
-
- [ ] Gemini CLI commands (`.toml`) for all Specxis commands
|
|
520
|
-
- [ ] Integration guide for Lexis-One private config
|
|
521
|
-
```
|
|
522
|
-
|
|
523
|
-
---
|
|
524
|
-
|
|
525
|
-
## Summary of Files to Create
|
|
526
|
-
|
|
527
|
-
```
|
|
528
|
-
templates/
|
|
529
|
-
specxis/
|
|
530
|
-
proposal.md
|
|
531
|
-
spec.md
|
|
532
|
-
tasks.md
|
|
533
|
-
review.md
|
|
534
|
-
|
|
535
|
-
.opencode/command/
|
|
536
|
-
specxis.md
|
|
537
|
-
specxis-new.md
|
|
538
|
-
specxis-plan.md
|
|
539
|
-
specxis-implement.md
|
|
540
|
-
specxis-review.md
|
|
541
|
-
specxis-close.md
|
|
542
|
-
specxis-debt.md
|
|
543
|
-
|
|
544
|
-
commands/
|
|
545
|
-
specxis.toml
|
|
546
|
-
specxis-new.toml
|
|
547
|
-
specxis-plan.toml
|
|
548
|
-
specxis-implement.toml
|
|
549
|
-
specxis-review.toml
|
|
550
|
-
specxis-close.toml
|
|
551
|
-
specxis-debt.toml
|
|
552
|
-
|
|
553
|
-
skills/
|
|
554
|
-
specxis/SKILL.md
|
|
555
|
-
specxis-plan/SKILL.md
|
|
556
|
-
specxis-review/SKILL.md
|
|
557
|
-
|
|
558
|
-
scripts/
|
|
559
|
-
specxis-init.js
|
|
560
|
-
|
|
561
|
-
docs/
|
|
562
|
-
specxis.md
|
|
563
|
-
|
|
564
|
-
README.md ← add v0.5 entry to roadmap
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
---
|
|
568
|
-
|
|
569
|
-
## Notes for the Agent
|
|
570
|
-
|
|
571
|
-
- All user-facing output in Spanish. All code, comments, file content in English.
|
|
572
|
-
- Follow AGENTS.md strictly — no abstractions not listed here, no extra deps.
|
|
573
|
-
- `specxis-init.js` uses ESM (`import`) — check `package.json` for `"type": "module"` before writing.
|
|
574
|
-
- The `.specxis/` folder goes in the **project using Lexis-Two**, not in the lexis-two repo itself.
|
|
575
|
-
The lexis-two repo only holds the templates, commands, skills, and scripts.
|
|
576
|
-
- Run `node scripts/check-rule-copies.js` after creating new skills to verify sync.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 860 336" xmlns="http://www.w3.org/2000/svg" font-family="-apple-system, 'Segoe UI', Helvetica, Arial, sans-serif">
|
|
2
|
-
<title>Median lines of code per arm across three models</title>
|
|
3
|
-
<text x="20" y="26" font-size="15" font-weight="600" fill="#8b949e">Median lines of code. 10 runs per cell. Lower is leaner.</text>
|
|
4
|
-
<text x="20" y="45" font-size="12" fill="#8b949e" opacity="0.85">Ponytail writes 80-94% less code, costs 47-77% less, and runs 3-6x faster than a no-skill agent.</text>
|
|
5
|
-
<rect x="20" y="58" width="12" height="12" rx="2" fill="#8b949e"/><text x="38" y="69" font-size="13" fill="#8b949e">baseline (no skill)</text>
|
|
6
|
-
<rect x="190" y="58" width="12" height="12" rx="2" fill="#d9822b"/><text x="208" y="69" font-size="13" fill="#8b949e">caveman</text>
|
|
7
|
-
<rect x="300" y="58" width="12" height="12" rx="2" fill="#2da44e"/><text x="318" y="69" font-size="13" fill="#8b949e">ponytail</text>
|
|
8
|
-
<text x="112" y="119" font-size="13" font-weight="600" fill="#8b949e" text-anchor="end">Haiku</text>
|
|
9
|
-
<rect x="120" y="92" width="508" height="14" rx="2" fill="#8b949e"/><text x="634" y="103" font-size="11" fill="#8b949e">518</text>
|
|
10
|
-
<rect x="120" y="110" width="114" height="14" rx="2" fill="#d9822b"/><text x="240" y="121" font-size="11" fill="#d9822b">116</text>
|
|
11
|
-
<rect x="120" y="128" width="38" height="14" rx="2" fill="#2da44e"/><text x="164" y="139" font-size="11" fill="#2da44e" font-weight="600">39</text>
|
|
12
|
-
<text x="112" y="193" font-size="13" font-weight="600" fill="#8b949e" text-anchor="end">Sonnet</text>
|
|
13
|
-
<rect x="120" y="166" width="680" height="14" rx="2" fill="#8b949e"/><text x="806" y="177" font-size="11" fill="#8b949e">693</text>
|
|
14
|
-
<rect x="120" y="184" width="118" height="14" rx="2" fill="#d9822b"/><text x="244" y="195" font-size="11" fill="#d9822b">120</text>
|
|
15
|
-
<rect x="120" y="202" width="43" height="14" rx="2" fill="#2da44e"/><text x="169" y="213" font-size="11" fill="#2da44e" font-weight="600">44</text>
|
|
16
|
-
<text x="112" y="267" font-size="13" font-weight="600" fill="#8b949e" text-anchor="end">Opus</text>
|
|
17
|
-
<rect x="120" y="240" width="251" height="14" rx="2" fill="#8b949e"/><text x="377" y="251" font-size="11" fill="#8b949e">256</text>
|
|
18
|
-
<rect x="120" y="258" width="66" height="14" rx="2" fill="#d9822b"/><text x="192" y="269" font-size="11" fill="#d9822b">67</text>
|
|
19
|
-
<rect x="120" y="276" width="50" height="14" rx="2" fill="#2da44e"/><text x="176" y="287" font-size="11" fill="#2da44e" font-weight="600">51</text>
|
|
20
|
-
<text x="120" y="324" font-size="11" fill="#8b949e" opacity="0.8">Median of 10 runs/cell, default temperature. 5 tasks (email, debounce, CSV sum, countdown, rate-limit), same model per group. Reproduce: npx promptfoo eval -c benchmarks/promptfooconfig.yaml</text>
|
|
21
|
-
</svg>
|
|
Binary file
|
|
Binary file
|
package/assets/logo.png
DELETED
|
Binary file
|
|
Binary file
|