@ui8kit/uxdx 0.1.0 → 0.1.2
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 +90 -14
- package/dist/uxdx.mjs +35 -12
- package/package.json +3 -3
- package/packages/sdlc/harness/README.md +44 -25
- package/packages/sdlc/harness/core/AGENTS.md +1 -1
- package/packages/sdlc/harness/core/README.md +5 -2
- package/packages/sdlc/harness/full/AGENTS.md +1 -1
- package/packages/sdlc/harness/full/README.md +7 -4
- package/packages/sdlc/harness/full/hooks/README.md +3 -3
- package/packages/sdlc/harness/light/AGENTS.md +1 -1
- package/packages/sdlc/harness/light/README.md +11 -9
- package/packages/sdlc/harness/light/skills/sdlc-light/SKILL.md +2 -1
package/README.md
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
# UXDX
|
|
2
2
|
|
|
3
|
-
CLI
|
|
4
|
-
commands. Package
|
|
3
|
+
CLI for operator files and SDLC harness packs. One binary (`uxdx`), two
|
|
4
|
+
commands. Package: [`@ui8kit/uxdx`](https://www.npmjs.com/package/@ui8kit/uxdx).
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Repo: [github.com/ui8kit/uxdx](https://github.com/ui8kit/uxdx)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
## Run
|
|
9
|
+
|
|
10
|
+
Prefer Bun (no Node `punycode` warning from `npx`):
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
bunx @ui8kit/uxdx --help
|
|
14
|
+
bunx @ui8kit/uxdx -p
|
|
15
|
+
bunx @ui8kit/uxdx -s --level light
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Same via npm:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
9
21
|
npx @ui8kit/uxdx --help
|
|
10
|
-
npx @ui8kit/uxdx
|
|
11
|
-
npx @ui8kit/uxdx
|
|
22
|
+
npx @ui8kit/uxdx -p
|
|
23
|
+
npx @ui8kit/uxdx -s --level light
|
|
12
24
|
```
|
|
13
25
|
|
|
14
|
-
|
|
26
|
+
`npx` may print `DEP0040` / `punycode`. That comes from npm’s Node, not this
|
|
27
|
+
CLI. The command still runs if you then see `uxdx: project init` or
|
|
28
|
+
`uxdx: sdlc …`.
|
|
15
29
|
|
|
16
|
-
|
|
17
|
-
without the scope:
|
|
30
|
+
After a local or global install the binary is unscoped:
|
|
18
31
|
|
|
19
32
|
```bash
|
|
20
33
|
npm i -g @ui8kit/uxdx
|
|
@@ -24,15 +37,78 @@ npm i -D @ui8kit/uxdx
|
|
|
24
37
|
npx uxdx --help
|
|
25
38
|
```
|
|
26
39
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
40
|
+
## Commands
|
|
41
|
+
|
|
42
|
+
Aliases are equivalent. `init` is the default and may be omitted.
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
uxdx [--help]
|
|
46
|
+
uxdx project | p | -p | --project [init] [--dir <path>] [--rules] [--force]
|
|
47
|
+
uxdx sdlc | s | -s | --sdlc [init] [--dir <path>] --level light|core|full [--force] [--no-install]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
| Flag | Command | Meaning |
|
|
51
|
+
| --- | --- | --- |
|
|
52
|
+
| `--dir <path>` | both | Target repo (default: cwd) |
|
|
53
|
+
| `--force` | both | Overwrite files this tool owns |
|
|
54
|
+
| `--rules` | `project` | Stub `.cursor/rules/uxdx.mdc` if missing |
|
|
55
|
+
| `--level` | `sdlc` | Required: `light`, `core`, or `full` |
|
|
56
|
+
| `--no-install` | `sdlc` | Copy `.sdlc/` only; skip `sdlc.sh install` |
|
|
57
|
+
|
|
58
|
+
### `project` (`-p`)
|
|
59
|
+
|
|
60
|
+
Writes the default operator layout. Existing filled files are left alone
|
|
61
|
+
unless `--force`. If `.manual/` already exists, it is not touched.
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
bunx @ui8kit/uxdx -p
|
|
65
|
+
bunx @ui8kit/uxdx -p --dir ./my-repo --rules
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Creates or updates:
|
|
69
|
+
|
|
70
|
+
- `README.md` (only if missing)
|
|
71
|
+
- `.gitignore` (`.manual/*` + `!.manual/.gitkeep`)
|
|
72
|
+
- `.cursorignore` (`.manual/`)
|
|
73
|
+
- `.project/README.md` stub
|
|
74
|
+
- `.manual/.gitkeep` (only if `.manual/` is missing)
|
|
30
75
|
|
|
31
|
-
|
|
76
|
+
Success:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
uxdx: project init in <dir>
|
|
80
|
+
README.md
|
|
81
|
+
.gitignore
|
|
82
|
+
.cursorignore
|
|
83
|
+
.project/
|
|
84
|
+
.manual/
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### `sdlc` (`-s`)
|
|
88
|
+
|
|
89
|
+
Copies one vendored pack into `.sdlc/`. `--level` is required (no silent
|
|
90
|
+
`full`). Then runs `.sdlc/sdlc.sh install` unless `--no-install`.
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
bunx @ui8kit/uxdx -s --level light
|
|
94
|
+
bunx @ui8kit/uxdx -s --level core --dir ./my-repo
|
|
95
|
+
bunx @ui8kit/uxdx -s --level full --no-install
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Do not stack two levels in one repo. Use `--force` only to replace a
|
|
99
|
+
different level.
|
|
100
|
+
|
|
101
|
+
Pack source: `packages/sdlc/harness/`.
|
|
102
|
+
|
|
103
|
+
## This checkout
|
|
32
104
|
|
|
33
105
|
```bash
|
|
34
106
|
bun install
|
|
35
107
|
bun test
|
|
36
|
-
bun run uxdx -- --help
|
|
37
108
|
bun run build
|
|
109
|
+
bun run uxdx -- --help
|
|
110
|
+
bun run uxdx -- -p --help
|
|
111
|
+
bun run uxdx -- -s --help
|
|
38
112
|
```
|
|
113
|
+
|
|
114
|
+
`--` after `bun run uxdx` is required so flags go to the CLI, not to Bun.
|
package/dist/uxdx.mjs
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
|
-
|
|
4
1
|
// packages/cli/src/parse.ts
|
|
5
2
|
var LEVELS = new Set(["light", "core", "full"]);
|
|
6
3
|
function takeFlag(rest, name) {
|
|
@@ -91,7 +88,7 @@ Usage:
|
|
|
91
88
|
uxdx project | p | -p | --project [init] [--dir <path>] [--rules] [--force]
|
|
92
89
|
uxdx sdlc | s | -s | --sdlc [init] [--dir <path>] --level light|core|full [--force] [--no-install]
|
|
93
90
|
|
|
94
|
-
-p / --project Scaffold README, ignores, and .manual
|
|
91
|
+
-p / --project Scaffold README, ignores, and .manual/.gitkeep if missing
|
|
95
92
|
-s / --sdlc Install an SDLC harness pack into .sdlc/
|
|
96
93
|
|
|
97
94
|
Run uxdx project --help or uxdx sdlc --help for command flags.
|
|
@@ -141,6 +138,35 @@ function writeIfMissing(file, body, force) {
|
|
|
141
138
|
return;
|
|
142
139
|
writeFileSync(file, body);
|
|
143
140
|
}
|
|
141
|
+
function ensureManualGitignore(file) {
|
|
142
|
+
const block = `.manual/*
|
|
143
|
+
!.manual/.gitkeep
|
|
144
|
+
`;
|
|
145
|
+
if (!existsSync(file)) {
|
|
146
|
+
writeFileSync(file, block);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const cur = readFileSync(file, "utf8");
|
|
150
|
+
const lines = cur.split(/\r?\n/);
|
|
151
|
+
if (lines.some((l) => l.trim() === ".manual/*")) {
|
|
152
|
+
ensureLine(file, "!.manual/.gitkeep", false);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const withoutFull = lines.filter((l) => l.trim() !== ".manual/");
|
|
156
|
+
const next = withoutFull.join(`
|
|
157
|
+
`);
|
|
158
|
+
const nl = next.endsWith(`
|
|
159
|
+
`) || next.length === 0 ? "" : `
|
|
160
|
+
`;
|
|
161
|
+
writeFileSync(file, `${next}${nl}${block}`);
|
|
162
|
+
}
|
|
163
|
+
function ensureManualDir(root) {
|
|
164
|
+
const dir = join(root, ".manual");
|
|
165
|
+
if (existsSync(dir))
|
|
166
|
+
return;
|
|
167
|
+
mkdirSync(dir, { recursive: true });
|
|
168
|
+
writeFileSync(join(dir, ".gitkeep"), "");
|
|
169
|
+
}
|
|
144
170
|
function initProject(opts) {
|
|
145
171
|
const root = opts.dir;
|
|
146
172
|
mkdirSync(root, { recursive: true });
|
|
@@ -150,7 +176,7 @@ function initProject(opts) {
|
|
|
150
176
|
writeIfMissing(readme, `# ${name}
|
|
151
177
|
`, opts.force);
|
|
152
178
|
done.push("README.md");
|
|
153
|
-
|
|
179
|
+
ensureManualGitignore(join(root, ".gitignore"));
|
|
154
180
|
done.push(".gitignore");
|
|
155
181
|
ensureLine(join(root, ".cursorignore"), ".manual/", opts.force);
|
|
156
182
|
done.push(".cursorignore");
|
|
@@ -161,7 +187,7 @@ function initProject(opts) {
|
|
|
161
187
|
Operator notes for this repository. See \`intent.md\` when present.
|
|
162
188
|
`, opts.force);
|
|
163
189
|
done.push(".project/");
|
|
164
|
-
|
|
190
|
+
ensureManualDir(root);
|
|
165
191
|
done.push(".manual/");
|
|
166
192
|
if (opts.rules) {
|
|
167
193
|
const rulesDir = join(root, ".cursor", "rules");
|
|
@@ -288,9 +314,6 @@ function run(argv) {
|
|
|
288
314
|
return 1;
|
|
289
315
|
}
|
|
290
316
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
export {
|
|
295
|
-
run
|
|
296
|
-
};
|
|
317
|
+
|
|
318
|
+
// packages/cli/src/bin.ts
|
|
319
|
+
process.exit(run(process.argv));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ui8kit/uxdx",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "CLI to accumulate operator and developer experience packs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"homepage": "https://github.com/ui8kit/uxdx",
|
|
39
39
|
"scripts": {
|
|
40
|
-
"build": "bun build packages/cli/src/
|
|
41
|
-
"uxdx": "bun packages/cli/src/
|
|
40
|
+
"build": "bun build packages/cli/src/bin.ts --outfile dist/uxdx.mjs --target node",
|
|
41
|
+
"uxdx": "bun packages/cli/src/bin.ts",
|
|
42
42
|
"test": "bun test",
|
|
43
43
|
"prepack": "bun run build",
|
|
44
44
|
"prepublishOnly": "bun test && bun run build",
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
# SDLC harness packs (solo)
|
|
2
2
|
|
|
3
|
-
Copy-
|
|
4
|
-
[
|
|
5
|
-
|
|
3
|
+
Copy-ready packs for the AI-native loop, sized for one operator. Method:
|
|
4
|
+
[The AI-Native SDLC Playbook](https://academy.claude.com/courses/ai-native-sdlc-playbook)
|
|
5
|
+
(public course). Map `plan.md` / `CLAUDE.md` onto Cursor Plan mode and
|
|
6
|
+
`AGENTS.md`.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
This tree is the source of truth. Install a pack with the published CLI:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
npx @ui8kit/uxdx sdlc --level light|core|full
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
That copies **one** pack into the target repo’s `.sdlc/` and, unless
|
|
15
|
+
`--no-install`, overlays Cursor rules/skills and merges `AGENTS.md`.
|
|
16
|
+
Never stack two levels. Do not copy this tree by hand.
|
|
17
|
+
|
|
18
|
+
Package: [`@ui8kit/uxdx`](https://www.npmjs.com/package/@ui8kit/uxdx)
|
|
9
19
|
|
|
10
20
|
## How it works
|
|
11
21
|
|
|
12
22
|
```
|
|
13
|
-
|
|
23
|
+
@ui8kit/uxdx packages/sdlc/harness/<level>/
|
|
14
24
|
│
|
|
15
|
-
│
|
|
25
|
+
│ npx @ui8kit/uxdx sdlc --level <level>
|
|
16
26
|
▼
|
|
17
27
|
your-repo/.sdlc/ artifacts + overlay text
|
|
18
28
|
│
|
|
@@ -23,9 +33,15 @@ your-repo/.sdlc/ artifacts + overlay text
|
|
|
23
33
|
└── cursor/rules/ copy → .cursor/rules/
|
|
24
34
|
```
|
|
25
35
|
|
|
26
|
-
1. Pick **full**, **core**, or **light
|
|
27
|
-
2.
|
|
28
|
-
3. **Activate Cursor**
|
|
36
|
+
1. Pick **full**, **core**, or **light**. Never stack two packs.
|
|
37
|
+
2. Run `npx @ui8kit/uxdx sdlc --level <level>` (add `--dir` if needed).
|
|
38
|
+
3. **Activate Cursor** is done by `sdlc.sh install` (default). To copy only:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
npx @ui8kit/uxdx sdlc --level <level> --no-install
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
then overlay yourself:
|
|
29
45
|
|
|
30
46
|
```bash
|
|
31
47
|
mkdir -p .cursor/rules .cursor/skills
|
|
@@ -33,26 +49,29 @@ your-repo/.sdlc/ artifacts + overlay text
|
|
|
33
49
|
cp -R .sdlc/skills/* .cursor/skills/
|
|
34
50
|
```
|
|
35
51
|
|
|
36
|
-
4. **AGENTS.md**: if the repo already has
|
|
37
|
-
|
|
38
|
-
|
|
52
|
+
4. **AGENTS.md**: if the repo already has one, the install **appends** a
|
|
53
|
+
marked overlay. Do not replace product contract text. If there is no root
|
|
54
|
+
file, install writes `.sdlc/AGENTS.md` to the repo root.
|
|
55
|
+
5. For each change: copy templates into `.sdlc/changes/<slug>/` (`sdlc.sh
|
|
56
|
+
start <slug>`) and fill them. Leave the pack-root files as templates.
|
|
57
|
+
6. Existing product rules stay. The harness adds SDLC rules only.
|
|
39
58
|
|
|
40
|
-
Human still merges. The agent writes artifacts and code; you accept `plan.md`
|
|
59
|
+
Human still merges. The agent writes artifacts and code; you accept `plan.md`
|
|
60
|
+
before a large diff.
|
|
41
61
|
|
|
42
62
|
## Levels
|
|
43
63
|
|
|
44
64
|
| Pack | Use when | Artifacts | Extra |
|
|
45
65
|
| --- | --- | --- | --- |
|
|
46
|
-
| `light/` | Product
|
|
47
|
-
| `core/` | Kernel, API,
|
|
48
|
-
| `full/` |
|
|
49
|
-
|
|
50
|
-
## Future CLI (not built)
|
|
66
|
+
| `light/` | Product already has a contract; small blast radius | `plan.md` required; `intent.md` optional; skip `spec.md` unless the public contract changes | No evals, no maintain bands |
|
|
67
|
+
| `core/` | Kernel, API, or shared library | `intent.md` + `plan.md`; short `spec.md` on boundary changes | Invariant skills; short `REVIEW.md` |
|
|
68
|
+
| `full/` | Shipping product or high-stakes operator surface | Full chain including `spec.md` | `REVIEW.md`, `evals/` stub, `bands.yaml` stub |
|
|
51
69
|
|
|
52
|
-
|
|
70
|
+
## Commands
|
|
53
71
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
72
|
+
```text
|
|
73
|
+
npx @ui8kit/uxdx sdlc --level full
|
|
74
|
+
bash .sdlc/sdlc.sh install
|
|
75
|
+
bash .sdlc/sdlc.sh start <slug>
|
|
76
|
+
bash .sdlc/sdlc.sh status
|
|
77
|
+
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- sdlc-harness:begin -->
|
|
2
2
|
## SDLC harness (core)
|
|
3
3
|
|
|
4
|
-
This repo uses the **core** pack (
|
|
4
|
+
This repo uses the **core** pack from [`@ui8kit/uxdx`](https://www.npmjs.com/package/@ui8kit/uxdx) (`.sdlc/`).
|
|
5
5
|
|
|
6
6
|
- Boundary, API, and policy changes: `intent.md` + short `spec.md` + `plan.md`.
|
|
7
7
|
- Mechanical fixes: `plan.md` only, still name the invariant you must not break.
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Core harness
|
|
2
2
|
|
|
3
3
|
For kernels, shared libraries, and high blast-radius contracts.
|
|
4
|
-
Examples: FormSet, Framework, Panel, ui8kit/aria, Context.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
Install:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
npx @ui8kit/uxdx sdlc --level core
|
|
9
|
+
```
|
|
7
10
|
|
|
8
11
|
## Per change
|
|
9
12
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- sdlc-harness:begin -->
|
|
2
2
|
## SDLC harness (full)
|
|
3
3
|
|
|
4
|
-
This repo uses the **full** pack (
|
|
4
|
+
This repo uses the **full** pack from [`@ui8kit/uxdx`](https://www.npmjs.com/package/@ui8kit/uxdx) (`.sdlc/`).
|
|
5
5
|
|
|
6
6
|
Loop: accepted `intent.md` → `spec.md` → `plan.md` → diff + existing verify
|
|
7
7
|
→ PR against `.sdlc/REVIEW.md` → you merge. Optional later: `evals/` on
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Full harness
|
|
2
2
|
|
|
3
|
-
For
|
|
4
|
-
Examples: SiteStarter, GoBackend, SvelteCMS, YPanel.
|
|
3
|
+
For shipping products and high-stakes operator surfaces.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
Install:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
npx @ui8kit/uxdx sdlc --level full
|
|
9
|
+
```
|
|
7
10
|
|
|
8
11
|
Solo adaptation: no MDM, no weekly committee. You still accept `spec.md` and
|
|
9
12
|
`plan.md`, merge PRs, and authorize production.
|
|
@@ -20,4 +23,4 @@ Solo adaptation: no MDM, no weekly committee. You still accept `spec.md` and
|
|
|
20
23
|
|
|
21
24
|
## Per change
|
|
22
25
|
|
|
23
|
-
`
|
|
26
|
+
`bash .sdlc/sdlc.sh start <slug>` (copies `intent.md`, `spec.md`, `plan.md`).
|
|
@@ -12,6 +12,6 @@ repo, for example:
|
|
|
12
12
|
Keep approval prompts off the build hot path so parallel sessions are not
|
|
13
13
|
serialized. Production gates belong at deploy, not on every file save.
|
|
14
14
|
|
|
15
|
-
Example PreToolUse shape lives in the playbook
|
|
16
|
-
(
|
|
17
|
-
enterprise settings unless you actually operate MDM.
|
|
15
|
+
Example PreToolUse shape lives in the public playbook
|
|
16
|
+
([hooks as approval gates](https://academy.claude.com/courses/ai-native-sdlc-playbook/hooks-as-approval-gates)).
|
|
17
|
+
Do not enable managed-only enterprise settings unless you actually operate MDM.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- sdlc-harness:begin -->
|
|
2
2
|
## SDLC harness (light)
|
|
3
3
|
|
|
4
|
-
This repo uses the **light** pack from
|
|
4
|
+
This repo uses the **light** pack from [`@ui8kit/uxdx`](https://www.npmjs.com/package/@ui8kit/uxdx).
|
|
5
5
|
Working copy: `.sdlc/`. Per-change artifacts: `.sdlc/changes/<slug>/`.
|
|
6
6
|
|
|
7
7
|
- Non-trivial work starts in plan mode. Commit `plan.md` before a large diff.
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
# Light harness
|
|
2
2
|
|
|
3
|
-
For product repos that already have a contract (`AGENTS.md`,
|
|
4
|
-
Examples: AlexY OS, GitCourse, Lab, BrandOSS, ui8px-cli, FastyGo UI.
|
|
3
|
+
For product repos that already have a contract (`AGENTS.md`, rules, tests).
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Install:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
npx @ui8kit/uxdx sdlc --level light
|
|
9
|
+
```
|
|
8
10
|
|
|
9
11
|
## Per change
|
|
10
12
|
|
|
11
|
-
1. `mkdir -p .sdlc/changes/<slug>`
|
|
12
|
-
2.
|
|
13
|
-
3. Add `intent.md` only if the origin is unclear
|
|
14
|
-
4. Skip `spec.md` unless you are changing published
|
|
15
|
-
5. Run the repo
|
|
13
|
+
1. `bash .sdlc/sdlc.sh start <slug>` (or `mkdir -p .sdlc/changes/<slug>`).
|
|
14
|
+
2. Fill `plan.md` in that folder.
|
|
15
|
+
3. Add `intent.md` only if the origin is unclear.
|
|
16
|
+
4. Skip `spec.md` unless you are changing a published or user-visible contract.
|
|
17
|
+
5. Run the repo’s existing verify command before calling the task done.
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
name: sdlc-light
|
|
3
3
|
description: >-
|
|
4
4
|
Light AI-native SDLC for a solo developer. Use when planning or implementing
|
|
5
|
-
work in a repo
|
|
5
|
+
work in a repo whose `.sdlc` was installed with `@ui8kit/uxdx` at level
|
|
6
|
+
light. Write plan.md,
|
|
6
7
|
skip spec.md unless IA changes, run existing verify commands.
|
|
7
8
|
---
|
|
8
9
|
|