minimal-vibe-coding-kit 0.4.0 → 0.4.1
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/.agents/skills/coding-level/SKILL.md +8 -1
- package/.agents/skills/path-sensitive-shell-safety/SKILL.md +1 -0
- package/.claude/rules/safe-delete.md +11 -0
- package/.claude/skills/coding-level/SKILL.md +8 -1
- package/.claude/skills/path-sensitive-shell-safety/SKILL.md +1 -0
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor/rules/040-safe-delete.mdc +16 -0
- package/.cursor/skills/coding-level/SKILL.md +8 -1
- package/.cursor/skills/path-sensitive-shell-safety/SKILL.md +1 -0
- package/.vibekit/docs/INSTALL.md +12 -0
- package/.vibekit/init/CLAUDE-template.md +2 -0
- package/.vibekit/init/FIRST_TIME_INIT.md +32 -0
- package/.vibekit/scripts/doctor.mjs +16 -1
- package/.vibekit/scripts/init-backbone.mjs +9 -0
- package/.vibekit/skills/coding-level/SKILL.md +8 -1
- package/.vibekit/skills/path-sensitive-shell-safety/SKILL.md +1 -0
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +11 -0
- package/README.md +45 -9
- package/{README.vi.md → docs/README.vi.md} +52 -16
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-level
|
|
3
|
-
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
|
|
3
|
+
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: "[0-5]"
|
|
6
6
|
---
|
|
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
|
|
|
20
20
|
|
|
21
21
|
1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
|
|
22
22
|
2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
|
|
23
|
+
3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
|
|
24
|
+
|
|
25
|
+
## Project default
|
|
26
|
+
|
|
27
|
+
- First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
|
|
28
|
+
- Sessions without an explicit `/coding-level` start from that default level.
|
|
29
|
+
- `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
|
|
23
30
|
|
|
24
31
|
## Scope
|
|
25
32
|
|
|
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
|
|
|
48
48
|
|
|
49
49
|
## Required outcomes
|
|
50
50
|
|
|
51
|
+
- Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
|
|
51
52
|
- A blank branch may follow the documented default-branch fallback policy.
|
|
52
53
|
- An explicit branch must fail if missing; never silently deploy another branch.
|
|
53
54
|
- A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Safe delete rules
|
|
2
|
+
|
|
3
|
+
- Never delete permanently by default. Prefer `trash` over `rm`, `rm -rf`, `rmdir`, and `find -delete` so deletions stay recoverable.
|
|
4
|
+
- Before deleting, check availability with `command -v trash`. If available, use `trash <path>`.
|
|
5
|
+
- If `trash` is missing, recommend installing it instead of falling back to `rm`:
|
|
6
|
+
- macOS 14 or newer: built in at `/usr/bin/trash`, nothing to install.
|
|
7
|
+
- Older macOS: `brew install trash` (https://formulae.brew.sh/formula/trash).
|
|
8
|
+
- Linux: `sudo apt install trash-cli` or `pip install trash-cli` (https://github.com/andreafrancia/trash-cli).
|
|
9
|
+
- Any OS with Node.js: `npm install --global trash-cli` (https://github.com/sindresorhus/trash-cli).
|
|
10
|
+
- Permanent deletion requires the user's explicit approval of the exact paths, and the `path-sensitive-shell-safety` skill first when paths come from variables.
|
|
11
|
+
- Honor the deletion preference recorded in `backbone.yml` `conventions.custom_rules` during first-time init.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-level
|
|
3
|
-
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
|
|
3
|
+
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: "[0-5]"
|
|
6
6
|
---
|
|
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
|
|
|
20
20
|
|
|
21
21
|
1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
|
|
22
22
|
2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
|
|
23
|
+
3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
|
|
24
|
+
|
|
25
|
+
## Project default
|
|
26
|
+
|
|
27
|
+
- First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
|
|
28
|
+
- Sessions without an explicit `/coding-level` start from that default level.
|
|
29
|
+
- `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
|
|
23
30
|
|
|
24
31
|
## Scope
|
|
25
32
|
|
|
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
|
|
|
48
48
|
|
|
49
49
|
## Required outcomes
|
|
50
50
|
|
|
51
|
+
- Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
|
|
51
52
|
- A blank branch may follow the documented default-branch fallback policy.
|
|
52
53
|
- An explicit branch must fail if missing; never silently deploy another branch.
|
|
53
54
|
- A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Safe-delete guardrail - prefer trash over rm so deletions stay recoverable.
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Safe delete rules
|
|
7
|
+
|
|
8
|
+
- Never delete permanently by default. Prefer `trash` over `rm`, `rm -rf`, `rmdir`, and `find -delete` so deletions stay recoverable.
|
|
9
|
+
- Before deleting, check availability with `command -v trash`. If available, use `trash <path>`.
|
|
10
|
+
- If `trash` is missing, recommend installing it instead of falling back to `rm`:
|
|
11
|
+
- macOS 14 or newer: built in at `/usr/bin/trash`, nothing to install.
|
|
12
|
+
- Older macOS: `brew install trash` (https://formulae.brew.sh/formula/trash).
|
|
13
|
+
- Linux: `sudo apt install trash-cli` or `pip install trash-cli` (https://github.com/andreafrancia/trash-cli).
|
|
14
|
+
- Any OS with Node.js: `npm install --global trash-cli` (https://github.com/sindresorhus/trash-cli).
|
|
15
|
+
- Permanent deletion requires the user's explicit approval of the exact paths, and the `path-sensitive-shell-safety` skill first when paths come from variables.
|
|
16
|
+
- Honor the deletion preference recorded in `backbone.yml` `conventions.custom_rules` during first-time init.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-level
|
|
3
|
-
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
|
|
3
|
+
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: "[0-5]"
|
|
6
6
|
---
|
|
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
|
|
|
20
20
|
|
|
21
21
|
1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
|
|
22
22
|
2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
|
|
23
|
+
3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
|
|
24
|
+
|
|
25
|
+
## Project default
|
|
26
|
+
|
|
27
|
+
- First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
|
|
28
|
+
- Sessions without an explicit `/coding-level` start from that default level.
|
|
29
|
+
- `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
|
|
23
30
|
|
|
24
31
|
## Scope
|
|
25
32
|
|
|
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
|
|
|
48
48
|
|
|
49
49
|
## Required outcomes
|
|
50
50
|
|
|
51
|
+
- Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
|
|
51
52
|
- A blank branch may follow the documented default-branch fallback policy.
|
|
52
53
|
- An explicit branch must fail if missing; never silently deploy another branch.
|
|
53
54
|
- A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
|
package/.vibekit/docs/INSTALL.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Install guide
|
|
2
2
|
|
|
3
|
+
## Install from npm
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# one-shot (recommended) — adds nothing to the project's dependencies:
|
|
7
|
+
npx --yes minimal-vibe-coding-kit@latest install /path/to/project
|
|
8
|
+
|
|
9
|
+
# or, after `npm i -D minimal-vibe-coding-kit` inside the project:
|
|
10
|
+
npx mvck install .
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`npm i` alone only places the kit in `node_modules/` and nothing is active yet; `mvck install` (alias: `vibe-kit`) is the step that copies the kit files into the repo root.
|
|
14
|
+
|
|
3
15
|
## Local install
|
|
4
16
|
|
|
5
17
|
```bash
|
|
@@ -16,11 +16,13 @@ This file is intentionally small. Shared rules live in `AGENTS.md`, project fact
|
|
|
16
16
|
- `/autoresearch-coding` - run a metric-driven improvement loop.
|
|
17
17
|
- `/security-scan` - run AgentShield-style review.
|
|
18
18
|
- `/daily-enhance` - propose rule, skill, and workflow improvements.
|
|
19
|
+
- `/coding-level N` - set explanation depth 0-5; the project default lives in `backbone.yml` `conventions.custom_rules`.
|
|
19
20
|
|
|
20
21
|
## Hard rules
|
|
21
22
|
|
|
22
23
|
- Show a diff and wait for explicit approval before changing root instruction files, `backbone.yml`, rules, skills, or workflows.
|
|
23
24
|
- Do not deploy, rotate secrets, run migrations, delete data, or rewrite remote history without explicit approval.
|
|
25
|
+
- Prefer `trash` over `rm` for deletions; permanent deletes need explicit approval of the exact paths (see `.claude/rules/safe-delete.md`).
|
|
24
26
|
- Keep `.autoresearch/`, `results.tsv`, and `.vibekit/reports/` local unless the user asks to commit them.
|
|
25
27
|
|
|
26
28
|
## English Learning & Grammar Correction
|
|
@@ -69,6 +69,38 @@ Then:
|
|
|
69
69
|
- Record domain terms and acronyms in `.vibekit/docs/CONTEXT.md` (scaffold from `.vibekit/docs/templates/CONTEXT_TEMPLATE.md`) and link it in `project.context`, so future agents stay concise.
|
|
70
70
|
- Keep the PRD short: it captures intent and focus, not a full specification.
|
|
71
71
|
|
|
72
|
+
## Setup preferences
|
|
73
|
+
|
|
74
|
+
Ask these two questions right after the PRD interview. Persist both answers as `backbone.yml` `conventions.custom_rules` entries in the same proposed diff.
|
|
75
|
+
|
|
76
|
+
### 1. Safe delete (trash instead of rm)
|
|
77
|
+
|
|
78
|
+
1. Detect first: run `command -v trash` (read-only).
|
|
79
|
+
2. If `trash` is available, ask: "Use `trash` instead of `rm` for deletions so they are recoverable? (recommended: yes)"
|
|
80
|
+
3. If `trash` is missing, recommend installing it, then ask the same question:
|
|
81
|
+
- macOS 14 or newer: already built in at `/usr/bin/trash`, nothing to install.
|
|
82
|
+
- Older macOS: `brew install trash` (https://formulae.brew.sh/formula/trash)
|
|
83
|
+
- Linux: `sudo apt install trash-cli` or `pip install trash-cli` (https://github.com/andreafrancia/trash-cli)
|
|
84
|
+
- Any OS with Node.js: `npm install --global trash-cli` (https://github.com/sindresorhus/trash-cli)
|
|
85
|
+
4. Record the answer as a custom rule:
|
|
86
|
+
- yes: `Deletion safety: use trash instead of rm; permanent deletes require explicit approval of the exact paths.`
|
|
87
|
+
- no: `Deletion safety: user declined trash; list the exact paths and wait for approval before any rm.`
|
|
88
|
+
|
|
89
|
+
### 2. Default coding level
|
|
90
|
+
|
|
91
|
+
Show this table exactly and ask: "Which explanation level should I use by default? Reply 0-5. You can change it anytime with `/coding-level N`."
|
|
92
|
+
|
|
93
|
+
| N | Level | Short description |
|
|
94
|
+
| --- | --- | --- |
|
|
95
|
+
| 0 | ELI5 | New to code. Everything in plain words, no jargon. |
|
|
96
|
+
| 1 | Junior | Knows the basics. Explains the why behind every step. |
|
|
97
|
+
| 2 | Mid-level | Comfortable coder. Patterns, architecture, trade-offs. |
|
|
98
|
+
| 3 | Senior | Concise. Trade-offs, edge cases, operational concerns. |
|
|
99
|
+
| 4 | Tech Lead | Strategic. Risk, ROI, team and organizational impact. |
|
|
100
|
+
| 5 | God | Expert peer. Minimal explanation, maximum signal. |
|
|
101
|
+
|
|
102
|
+
Record the answer as a custom rule: `Default coding level: N (<Level>) - apply this explanation depth every session; change with /coding-level N.`
|
|
103
|
+
|
|
72
104
|
## FIRST_TIME_INIT_RULES
|
|
73
105
|
|
|
74
106
|
Create project rules from evidence in the existing repo, not from a fixed language or framework template.
|
|
@@ -153,6 +153,13 @@ function statusLine(ok, label, detail) {
|
|
|
153
153
|
return `${ok ? 'PASS' : 'WARN'} ${label}${detail ? ` - ${detail}` : ''}`;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
const TRASH_INSTALL_HINT = 'macOS 14+ has it built in; older macOS: brew install trash; Linux: sudo apt install trash-cli; any OS with Node: npm i -g trash-cli';
|
|
157
|
+
|
|
158
|
+
function trashAvailable() {
|
|
159
|
+
const result = spawnSync('trash', ['--help'], { encoding: 'utf8' });
|
|
160
|
+
return !(result.error && result.error.code === 'ENOENT');
|
|
161
|
+
}
|
|
162
|
+
|
|
156
163
|
const backbone = parseBackbone();
|
|
157
164
|
const packageJson = readJson('package.json');
|
|
158
165
|
const isKitTemplate = packageJson?.name === 'minimal-vibe-coding-kit';
|
|
@@ -194,8 +201,11 @@ for (const [surface, dir] of Object.entries(nativeSkillSurfaces)) {
|
|
|
194
201
|
const commands = commandMap();
|
|
195
202
|
const validation = runNodeScript('.vibekit/scripts/validate-kit.mjs');
|
|
196
203
|
const probe = runProbe();
|
|
204
|
+
const hasTrash = trashAvailable();
|
|
197
205
|
const risks = [];
|
|
198
206
|
|
|
207
|
+
if (!hasTrash) risks.push(`trash command not found; agents fall back to asking before rm. Install it for recoverable deletes (${TRASH_INSTALL_HINT}).`);
|
|
208
|
+
|
|
199
209
|
if (!backbone) risks.push('backbone.yml is missing.');
|
|
200
210
|
else if (backbone.templateStatus !== 'initialized' && !isKitTemplate) risks.push(`backbone.yml is ${backbone.templateStatus || 'unknown'}; run init before relying on it.`);
|
|
201
211
|
if (!Object.values(surfaces).some(Boolean)) risks.push('No AI agent surfaces were detected.');
|
|
@@ -238,6 +248,10 @@ const report = {
|
|
|
238
248
|
command: probe.command,
|
|
239
249
|
status: probe.status
|
|
240
250
|
},
|
|
251
|
+
safeDelete: {
|
|
252
|
+
trashAvailable: hasTrash,
|
|
253
|
+
installHint: hasTrash ? null : TRASH_INSTALL_HINT
|
|
254
|
+
},
|
|
241
255
|
aiRulesLoaded: {
|
|
242
256
|
sharedSkills: listFiles('.vibekit/skills').filter((f) => f.endsWith('SKILL.md')).length,
|
|
243
257
|
claudeSkills: listFiles('.claude/skills').filter((f) => f.endsWith('SKILL.md')).length,
|
|
@@ -256,7 +270,8 @@ function renderMarkdown(data) {
|
|
|
256
270
|
statusLine(Boolean(commands.validate), 'validation command detected', commands.validate || 'missing'),
|
|
257
271
|
statusLine(protectedSane, 'protected paths are sane', `${data.protectedPaths.length} entries`),
|
|
258
272
|
statusLine(validation.found && validation.status === 0, 'validation runs', validation.found ? `exit ${validation.status}` : 'missing'),
|
|
259
|
-
statusLine(probe.found && probe.status === 0, 'AgentShield probe runs', probe.found ? `exit ${probe.status}` : 'missing')
|
|
273
|
+
statusLine(probe.found && probe.status === 0, 'AgentShield probe runs', probe.found ? `exit ${probe.status}` : 'missing'),
|
|
274
|
+
statusLine(hasTrash, 'trash command available for safe deletes', hasTrash ? 'deletions are recoverable' : TRASH_INSTALL_HINT)
|
|
260
275
|
];
|
|
261
276
|
|
|
262
277
|
return `# Vibe Report
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { spawnSync } from 'node:child_process';
|
|
4
5
|
|
|
5
6
|
const args = process.argv.slice(2);
|
|
7
|
+
|
|
8
|
+
function trashAvailable() {
|
|
9
|
+
const result = spawnSync('trash', ['--help'], { encoding: 'utf8' });
|
|
10
|
+
return !(result.error && result.error.code === 'ENOENT');
|
|
11
|
+
}
|
|
6
12
|
const shouldWrite = args.includes('--write');
|
|
7
13
|
const yes = args.includes('--yes');
|
|
8
14
|
|
|
@@ -619,6 +625,9 @@ if (shouldWrite) {
|
|
|
619
625
|
console.log(inferred.context === 'none'
|
|
620
626
|
? '- Offer to create .vibekit/docs/CONTEXT.md (glossary) from .vibekit/docs/templates/CONTEXT_TEMPLATE.md.'
|
|
621
627
|
: `- CONTEXT glossary found at ${inferred.context}; keep it current.`);
|
|
628
|
+
console.log('\nSetup preferences (record answers in conventions.custom_rules; see FIRST_TIME_INIT.md "Setup preferences"):');
|
|
629
|
+
console.log(`- Safe delete: trash command ${trashAvailable() ? 'available' : 'NOT found (recommend: macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS `npm i -g trash-cli`)'} - ask: use trash instead of rm? (recommended: yes)`);
|
|
630
|
+
console.log('- Default coding level: ask 0-5 (0 ELI5, 1 Junior, 2 Mid-level, 3 Senior, 4 Tech Lead, 5 God); changeable later with /coding-level N.');
|
|
622
631
|
console.log('\nConvention review questions:');
|
|
623
632
|
for (const question of inferred.conventions.reviewQuestions) console.log(`- ${question}`);
|
|
624
633
|
console.log('\nProposed backbone.yml:\n');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-level
|
|
3
|
-
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
|
|
3
|
+
description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
argument-hint: "[0-5]"
|
|
6
6
|
---
|
|
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
|
|
|
20
20
|
|
|
21
21
|
1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
|
|
22
22
|
2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
|
|
23
|
+
3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
|
|
24
|
+
|
|
25
|
+
## Project default
|
|
26
|
+
|
|
27
|
+
- First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
|
|
28
|
+
- Sessions without an explicit `/coding-level` start from that default level.
|
|
29
|
+
- `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
|
|
23
30
|
|
|
24
31
|
## Scope
|
|
25
32
|
|
|
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
|
|
|
48
48
|
|
|
49
49
|
## Required outcomes
|
|
50
50
|
|
|
51
|
+
- Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
|
|
51
52
|
- A blank branch may follow the documented default-branch fallback policy.
|
|
52
53
|
- An explicit branch must fail if missing; never silently deploy another branch.
|
|
53
54
|
- A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
|
package/AGENTS.md
CHANGED
|
@@ -31,6 +31,7 @@ Track every loop in `/tmp/design-{project_slug}.md`. Each loop entry must includ
|
|
|
31
31
|
### Safety
|
|
32
32
|
|
|
33
33
|
- Never print full secrets.
|
|
34
|
+
- Prefer `trash` over `rm` for deletions so they stay recoverable. Check `command -v trash` first; if missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`) instead of falling back to `rm`. Permanent deletes require explicit user approval of the exact paths.
|
|
34
35
|
- Do not run untrusted hooks, MCP servers, deploy scripts, package lifecycle scripts, migrations, or destructive shell commands just to inspect a repo.
|
|
35
36
|
- Do not modify protected paths from `backbone.yml` without explicit approval.
|
|
36
37
|
- Before editing or approving shell/deploy/installer/repair logic that uses path variables or destructive commands (`rm`, `mv`, `cp -a`, `rsync --delete`, `find -delete`, `git clean`, checkout replacement), use `path-sensitive-shell-safety` and prove base/folder/repo values are non-empty, contained, quoted, and not broad system paths.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.1 — 2026-07-17
|
|
4
|
+
|
|
5
|
+
- Added a safe-delete guardrail across all three surfaces: new `.claude/rules/safe-delete.md` and `.cursor/rules/040-safe-delete.mdc` (always-on), a `### Safety` bullet in the `AGENTS.md` managed block for Codex, and a trash-first outcome in the `path-sensitive-shell-safety` skill (all mirrors). Agents prefer the recoverable `trash` command over `rm`, check `command -v trash` first, and recommend an install when missing (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`). `rm` was already deny-listed for Claude Code and Cursor in the kit settings.
|
|
6
|
+
- First-time init now asks two setup preferences and records them in `backbone.yml` `conventions.custom_rules`: use `trash` instead of `rm` (with availability detection and install hints), and a default coding level chosen from a 0–5 table with one-line descriptions. Mirrored in the `init-backbone.mjs --propose` interview output.
|
|
7
|
+
- `coding-level` skill (all mirrors): sessions now start from the `Default coding level: N` entry in `backbone.yml` when present; `/coding-level N` still overrides per session and can save a new default with approval. `CLAUDE-template.md` now lists `/coding-level` and the safe-delete rule.
|
|
8
|
+
- `mvck doctor` reports a new safe-delete check: whether the `trash` command is available, with the per-OS install hint when it is not.
|
|
9
|
+
- Fixed the npm package page rendering the Vietnamese README: moved `README.vi.md` to `docs/README.vi.md` so npm's readme detection always picks `README.md`.
|
|
10
|
+
- Added an "Install from npm" section to `README.md`, `docs/README.vi.md`, and `.vibekit/docs/INSTALL.md`: one-shot `npx --yes minimal-vibe-coding-kit@latest install <path>`, or `npm i -D minimal-vibe-coding-kit` followed by `npx mvck install .`, with a note that files in `node_modules/` stay inactive until `mvck install` copies them into the repo root.
|
|
11
|
+
- Switched README install/update/profile examples to the published npm package; the `github:` form and local `install.sh` remain documented as alternatives.
|
|
12
|
+
- Synced version to 0.4.1 in `package.json`, both README badges, and `.codex-plugin/plugin.json`; added an npm badge.
|
|
13
|
+
|
|
3
14
|
## 0.4.0 — 2026-07-16
|
|
4
15
|
|
|
5
16
|
- Trimmed the end-user install payload: `mvck install`/`update` no longer copy kit-maintainer files (`test-install.mjs`, `pack-dry-run.mjs`, `.vibekit/docs/RESEARCH_NOTES.md`, `.vibekit/docs/AUTORESEARCH_LEDGER.md`); `validate-kit` requires them only in the kit source repo.
|
package/README.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
**Read in:** **English** · [Tiếng Việt](README.vi.md)
|
|
3
|
+
**Read in:** **English** · [Tiếng Việt](docs/README.vi.md)
|
|
4
4
|
|
|
5
5
|
# Minimal Vibe Coding Kit
|
|
6
6
|
|
|
7
7
|
[](LICENSE)
|
|
8
|
-
[](https://www.npmjs.com/package/minimal-vibe-coding-kit)
|
|
9
|
+
[](CHANGELOG.md)
|
|
9
10
|

|
|
10
11
|

|
|
11
12
|

|
|
@@ -27,6 +28,8 @@ A small kit of shared **rules**, **skills**, and **commands**, plus one **`backb
|
|
|
27
28
|
- Never overwrites your existing `CLAUDE.md` / `AGENTS.md` — it only adds managed blocks.
|
|
28
29
|
- Every setup write waits for your explicit approval.
|
|
29
30
|
- Security review of agent surfaces (AgentShield) is part of the normal workflow.
|
|
31
|
+
- Safe deletes by default: `rm` is deny-listed for Claude Code and Cursor, and all agents prefer the recoverable `trash` command (init checks it and recommends an install if missing).
|
|
32
|
+
- First-time init asks two setup preferences — use `trash` instead of `rm`, and your default explanation level (0–5, changeable anytime with `/coding-level N`) — and records both in `backbone.yml`.
|
|
30
33
|
|
|
31
34
|
## Quick Start
|
|
32
35
|
|
|
@@ -35,10 +38,10 @@ Three steps, about two minutes.
|
|
|
35
38
|
**1. Install into your project** (no clone needed):
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
|
-
npx
|
|
41
|
+
npx --yes minimal-vibe-coding-kit@latest install /path/to/your-project
|
|
39
42
|
```
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
Already ran `npm i minimal-vibe-coding-kit`, or prefer GitHub or a local clone? See [Install from npm](#install-from-npm).
|
|
42
45
|
|
|
43
46
|
**2. Open the project in Claude Code, Cursor, or Codex and paste:**
|
|
44
47
|
|
|
@@ -58,6 +61,39 @@ Optional health check any time:
|
|
|
58
61
|
node .vibekit/scripts/mvck.mjs doctor .
|
|
59
62
|
```
|
|
60
63
|
|
|
64
|
+
## Install from npm
|
|
65
|
+
|
|
66
|
+
The kit is published on npm as [`minimal-vibe-coding-kit`](https://www.npmjs.com/package/minimal-vibe-coding-kit). It is a **scaffolding CLI, not a library** — files sitting in `node_modules/` do nothing by themselves. Running `install` once copies the kit into your repo root, exactly like the GitHub installer does.
|
|
67
|
+
|
|
68
|
+
**Option A — one-shot (recommended).** Nothing is added to your project's dependencies:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx --yes minimal-vibe-coding-kit@latest install /path/to/your-project
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Option B — as a dependency.** If the package is (or will be) in your `package.json`, one more command is required:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm i -D minimal-vibe-coding-kit
|
|
78
|
+
npx mvck install . # required — copies the kit out of node_modules into your repo
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> **Important:** `npm i` alone only downloads the kit into `node_modules/` — nothing is active yet.
|
|
82
|
+
> `mvck install` is the step that copies `.claude/`, `.cursor/`, `.agents/`, `.vibekit/`, and `backbone.yml` into your repo root.
|
|
83
|
+
|
|
84
|
+
Either way, the short `mvck` command (alias: `vibe-kit`) is then available via `npx`:
|
|
85
|
+
|
|
86
|
+
| Short command | What it does |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| `npx mvck install .` | Copy the kit into the repo (`--profile`, `--dry-run`, `--force`) |
|
|
89
|
+
| `npx mvck update .` | Refresh kit-owned files after a new kit release |
|
|
90
|
+
| `npx mvck doctor .` | Read-only health check |
|
|
91
|
+
| `npx mvck validate .` | Structure validation |
|
|
92
|
+
|
|
93
|
+
Then continue with **step 2** of the Quick Start (paste the init prompt).
|
|
94
|
+
|
|
95
|
+
Other install paths: `npx github:giang6283623/minimal-vibe-coding-kit install /path/to/your-project`, or from a local clone `./install.sh /path/to/your-project` (Windows: `./install.ps1 -Target C:\path\to\your-project`).
|
|
96
|
+
|
|
61
97
|
## What lands in your repo
|
|
62
98
|
|
|
63
99
|
Install adds exactly this — nothing else in your project is touched:
|
|
@@ -149,9 +185,9 @@ All 12 skills live in `.vibekit/skills/` and are mirrored for each tool. Invoke
|
|
|
149
185
|
Install only the surfaces you use (default is `all`):
|
|
150
186
|
|
|
151
187
|
```bash
|
|
152
|
-
npx
|
|
153
|
-
npx
|
|
154
|
-
npx
|
|
188
|
+
npx --yes minimal-vibe-coding-kit@latest install . --profile claude # Claude Code only
|
|
189
|
+
npx --yes minimal-vibe-coding-kit@latest install . --profile claude,cursor # Claude + Cursor
|
|
190
|
+
npx --yes minimal-vibe-coding-kit@latest install . --profile codex # Codex / AGENTS.md agents
|
|
155
191
|
```
|
|
156
192
|
|
|
157
193
|
Flags: `--force` (overwrite existing kit files), `--dry-run` (preview), `--json` (machine-readable plan).
|
|
@@ -161,8 +197,8 @@ Flags: `--force` (overwrite existing kit files), `--dry-run` (preview), `--json`
|
|
|
161
197
|
Run inside your project when the kit ships new skills or scripts:
|
|
162
198
|
|
|
163
199
|
```bash
|
|
164
|
-
npx
|
|
165
|
-
npx
|
|
200
|
+
npx --yes minimal-vibe-coding-kit@latest update . --dry-run # preview
|
|
201
|
+
npx --yes minimal-vibe-coding-kit@latest update . # apply
|
|
166
202
|
```
|
|
167
203
|
|
|
168
204
|
`update` refreshes **kit-owned files only**, never touches `backbone.yml` or your own content, updates managed blocks in place, and backs up changed files to `.vibekit/update-backup/<timestamp>/`. Details: [.vibekit/docs/INSTALL.md](.vibekit/docs/INSTALL.md).
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
**Đọc bằng:** [English](README.md) · **Tiếng Việt**
|
|
3
|
+
**Đọc bằng:** [English](../README.md) · **Tiếng Việt**
|
|
4
4
|
|
|
5
5
|
# Minimal Vibe Coding Kit
|
|
6
6
|
|
|
7
|
-
[](LICENSE)
|
|
8
|
-
[](../LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/minimal-vibe-coding-kit)
|
|
9
|
+
[](../CHANGELOG.md)
|
|
9
10
|

|
|
10
11
|

|
|
11
12
|

|
|
@@ -27,6 +28,8 @@ Một bộ kit nhỏ gồm **rules**, **skills**, **commands** dùng chung, cộ
|
|
|
27
28
|
- Không bao giờ ghi đè `CLAUDE.md` / `AGENTS.md` sẵn có — chỉ thêm managed block.
|
|
28
29
|
- Mọi thao tác ghi khi setup đều chờ bạn duyệt.
|
|
29
30
|
- Rà soát bảo mật bề mặt agent (AgentShield) là một phần của workflow bình thường.
|
|
31
|
+
- Xóa an toàn mặc định: `rm` bị deny-list cho Claude Code và Cursor, mọi agent ưu tiên lệnh `trash` (khôi phục được; init sẽ kiểm tra và gợi ý cách cài nếu thiếu).
|
|
32
|
+
- Init lần đầu hỏi hai tùy chọn — dùng `trash` thay `rm`, và mức giải thích mặc định (0–5, đổi bất cứ lúc nào với `/coding-level N`) — rồi lưu cả hai vào `backbone.yml`.
|
|
30
33
|
|
|
31
34
|
## Bắt đầu nhanh
|
|
32
35
|
|
|
@@ -35,10 +38,10 @@ Ba bước, khoảng hai phút.
|
|
|
35
38
|
**1. Cài vào project của bạn** (không cần clone):
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
|
-
npx
|
|
41
|
+
npx --yes minimal-vibe-coding-kit@latest install /path/to/your-project
|
|
39
42
|
```
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
Đã chạy `npm i minimal-vibe-coding-kit`, hoặc muốn cài từ GitHub / bản clone? Xem [Cài từ npm](#cài-từ-npm).
|
|
42
45
|
|
|
43
46
|
**2. Mở project trong Claude Code, Cursor hoặc Codex và dán:**
|
|
44
47
|
|
|
@@ -58,6 +61,39 @@ Kiểm tra sức khỏe bất cứ lúc nào:
|
|
|
58
61
|
node .vibekit/scripts/mvck.mjs doctor .
|
|
59
62
|
```
|
|
60
63
|
|
|
64
|
+
## Cài từ npm
|
|
65
|
+
|
|
66
|
+
Kit được publish trên npm với tên [`minimal-vibe-coding-kit`](https://www.npmjs.com/package/minimal-vibe-coding-kit). Đây là **CLI scaffolding, không phải library** — file nằm trong `node_modules/` tự nó không làm gì cả. Chạy `install` một lần sẽ copy kit vào repo root của bạn, giống hệt installer từ GitHub.
|
|
67
|
+
|
|
68
|
+
**Cách A — chạy một phát (khuyến nghị).** Không thêm gì vào dependencies của project:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx --yes minimal-vibe-coding-kit@latest install /path/to/your-project
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Cách B — cài như dependency.** Nếu bạn đã (hoặc muốn) `npm i` package, cần thêm đúng một lệnh nữa:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm i -D minimal-vibe-coding-kit
|
|
78
|
+
npx mvck install . # bắt buộc — copy kit từ node_modules ra repo của bạn
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
> **Quan trọng:** `npm i` một mình chỉ tải kit vào `node_modules/` — chưa có gì hoạt động.
|
|
82
|
+
> `mvck install` mới là bước copy `.claude/`, `.cursor/`, `.agents/`, `.vibekit/` và `backbone.yml` vào repo root.
|
|
83
|
+
|
|
84
|
+
Sau đó, lệnh ngắn `mvck` (alias: `vibe-kit`) dùng được qua `npx`:
|
|
85
|
+
|
|
86
|
+
| Lệnh ngắn | Chức năng |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| `npx mvck install .` | Copy kit vào repo (`--profile`, `--dry-run`, `--force`) |
|
|
89
|
+
| `npx mvck update .` | Làm mới file thuộc kit khi có bản phát hành mới |
|
|
90
|
+
| `npx mvck doctor .` | Health check chỉ-đọc |
|
|
91
|
+
| `npx mvck validate .` | Validate cấu trúc |
|
|
92
|
+
|
|
93
|
+
Rồi tiếp tục **bước 2** của Bắt đầu nhanh (dán prompt init).
|
|
94
|
+
|
|
95
|
+
Các cách cài khác: `npx github:giang6283623/minimal-vibe-coding-kit install /path/to/your-project`, hoặc từ bản clone `./install.sh /path/to/your-project` (Windows: `./install.ps1 -Target C:\path\to\your-project`).
|
|
96
|
+
|
|
61
97
|
## Những gì được cài vào repo của bạn
|
|
62
98
|
|
|
63
99
|
Cài đặt chỉ thêm đúng những mục sau — không đụng vào bất cứ thứ gì khác:
|
|
@@ -149,9 +185,9 @@ Cả 12 skill nằm trong `.vibekit/skills/` và được mirror cho từng tool
|
|
|
149
185
|
Chỉ cài các bề mặt bạn dùng (mặc định là `all`):
|
|
150
186
|
|
|
151
187
|
```bash
|
|
152
|
-
npx
|
|
153
|
-
npx
|
|
154
|
-
npx
|
|
188
|
+
npx --yes minimal-vibe-coding-kit@latest install . --profile claude # chỉ Claude Code
|
|
189
|
+
npx --yes minimal-vibe-coding-kit@latest install . --profile claude,cursor # Claude + Cursor
|
|
190
|
+
npx --yes minimal-vibe-coding-kit@latest install . --profile codex # Codex / agent dùng AGENTS.md
|
|
155
191
|
```
|
|
156
192
|
|
|
157
193
|
Cờ: `--force` (ghi đè file kit sẵn có), `--dry-run` (xem trước), `--json` (kế hoạch dạng máy đọc).
|
|
@@ -161,11 +197,11 @@ Cờ: `--force` (ghi đè file kit sẵn có), `--dry-run` (xem trước), `--js
|
|
|
161
197
|
Chạy trong project của bạn khi kit có skill hoặc script mới:
|
|
162
198
|
|
|
163
199
|
```bash
|
|
164
|
-
npx
|
|
165
|
-
npx
|
|
200
|
+
npx --yes minimal-vibe-coding-kit@latest update . --dry-run # xem trước
|
|
201
|
+
npx --yes minimal-vibe-coding-kit@latest update . # áp dụng
|
|
166
202
|
```
|
|
167
203
|
|
|
168
|
-
`update` chỉ làm mới **file thuộc kit**, không bao giờ đụng `backbone.yml` hay nội dung của bạn, cập nhật managed block tại chỗ, và backup file bị thay vào `.vibekit/update-backup/<timestamp>/`. Chi tiết: [.vibekit/docs/INSTALL.md](
|
|
204
|
+
`update` chỉ làm mới **file thuộc kit**, không bao giờ đụng `backbone.yml` hay nội dung của bạn, cập nhật managed block tại chỗ, và backup file bị thay vào `.vibekit/update-backup/<timestamp>/`. Chi tiết: [.vibekit/docs/INSTALL.md](../.vibekit/docs/INSTALL.md).
|
|
169
205
|
|
|
170
206
|
### Vòng lặp Autoresearch
|
|
171
207
|
|
|
@@ -185,7 +221,7 @@ node .vibekit/scripts/agentshield-probe.mjs . # probe c
|
|
|
185
221
|
npx ecc-agentshield scan --path . --format text --min-severity medium # scan đầy đủ, tùy chọn
|
|
186
222
|
```
|
|
187
223
|
|
|
188
|
-
Mọi thay đổi tới `CLAUDE.md`, `AGENTS.md`, `.claude/**`, `.cursor/**`, `.agents/**`, `.codex-plugin/**`, hoặc `.vibekit/skills|commands|scripts/**` đều nên kích hoạt review. Mô hình: [.vibekit/docs/SECURITY_MODEL.md](
|
|
224
|
+
Mọi thay đổi tới `CLAUDE.md`, `AGENTS.md`, `.claude/**`, `.cursor/**`, `.agents/**`, `.codex-plugin/**`, hoặc `.vibekit/skills|commands|scripts/**` đều nên kích hoạt review. Mô hình: [.vibekit/docs/SECURITY_MODEL.md](../.vibekit/docs/SECURITY_MODEL.md).
|
|
189
225
|
|
|
190
226
|
### Doctor và báo cáo
|
|
191
227
|
|
|
@@ -202,14 +238,14 @@ npm test # syntax + test cài đặt thật vào thư mục tạm
|
|
|
202
238
|
npm run validate:all # npm test + AgentShield probe + npm pack dry-run
|
|
203
239
|
```
|
|
204
240
|
|
|
205
|
-
Checklist publish: [.vibekit/init/PUSH_TO_GITHUB.md](
|
|
241
|
+
Checklist publish: [.vibekit/init/PUSH_TO_GITHUB.md](../.vibekit/init/PUSH_TO_GITHUB.md). Tài liệu sâu hơn: [.vibekit/docs/](../.vibekit/docs/).
|
|
206
242
|
|
|
207
243
|
<details>
|
|
208
244
|
<summary><strong>Khắc phục sự cố</strong></summary>
|
|
209
245
|
|
|
210
246
|
| Triệu chứng | Cách xử lý |
|
|
211
247
|
| --- | --- |
|
|
212
|
-
| Agent bỏ qua luồng init | Chạy lại installer, hoặc copy [.vibekit/init/CLAUDE-template.md](
|
|
248
|
+
| Agent bỏ qua luồng init | Chạy lại installer, hoặc copy [.vibekit/init/CLAUDE-template.md](../.vibekit/init/CLAUDE-template.md) thành `CLAUDE.md`. |
|
|
213
249
|
| Agent hỏi init lại mỗi phiên | Chạy init và duyệt; xác nhận `meta.template_status: initialized` trong `backbone.yml`. |
|
|
214
250
|
| Dò sai stack | Xóa lockfile cũ, hoặc sửa `backbone.yml` trực tiếp. |
|
|
215
251
|
| Agent chạm path không nên | Thêm path vào `policy.protected_paths` trong `backbone.yml` (hỗ trợ glob). |
|
|
@@ -220,13 +256,13 @@ Checklist publish: [.vibekit/init/PUSH_TO_GITHUB.md](.vibekit/init/PUSH_TO_GITHU
|
|
|
220
256
|
|
|
221
257
|
## Đóng góp
|
|
222
258
|
|
|
223
|
-
Issue và PR luôn welcome tại [`giang6283623/minimal-vibe-coding-kit`](https://github.com/giang6283623/minimal-vibe-coding-kit). Trước khi mở PR: mirror thay đổi skill giữa `.claude/`, `.cursor/`, `.agents/`, giữ template trung lập, và chạy `npm run validate:all`. Xem [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
|
|
259
|
+
Issue và PR luôn welcome tại [`giang6283623/minimal-vibe-coding-kit`](https://github.com/giang6283623/minimal-vibe-coding-kit). Trước khi mở PR: mirror thay đổi skill giữa `.claude/`, `.cursor/`, `.agents/`, giữ template trung lập, và chạy `npm run validate:all`. Xem [CONTRIBUTING.md](../CONTRIBUTING.md), [SECURITY.md](../SECURITY.md), [CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md).
|
|
224
260
|
|
|
225
261
|
**Tác giả:** [GiangBV](https://www.linkedin.com/in/buivangiang1992), [AuPMH](https://www.linkedin.com/in/pham-au-2a1bb1162)
|
|
226
262
|
**Powered by:** Caffeine, Determination, AI Collaboration, và những đêm code cuối tuần.
|
|
227
263
|
|
|
228
264
|
## Giấy phép
|
|
229
265
|
|
|
230
|
-
MIT. Xem [LICENSE](LICENSE).
|
|
266
|
+
MIT. Xem [LICENSE](../LICENSE).
|
|
231
267
|
|
|
232
268
|
> 🇻🇳 *Nếu bạn yêu Việt Nam và con người Việt Nam, bạn hoàn toàn được dùng miễn phí mọi thứ trong đây.*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "minimal-vibe-coding-kit",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Project-agnostic AI coding workflow kit for Claude Code, Cursor, and Codex with AgentShield security review.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"install.sh",
|
|
79
79
|
"install.ps1",
|
|
80
80
|
"README.md",
|
|
81
|
-
"README.vi.md",
|
|
81
|
+
"docs/README.vi.md",
|
|
82
82
|
"SECURITY.md",
|
|
83
83
|
"CONTRIBUTING.md",
|
|
84
84
|
"CODE_OF_CONDUCT.md",
|