minimal-vibe-coding-kit 0.3.0 → 0.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/.agents/skills/agentshield-security-review/SKILL.md +6 -6
- package/.agents/skills/agentshield-security-review/references/native-install.md +10 -10
- package/.agents/skills/agentshield-security-review/references/report-template.md +1 -1
- package/.agents/skills/agentshield-security-review/scripts/agentshield_repo_probe.py +3 -3
- package/.agents/skills/autoresearch-coding/README.md +1 -1
- package/.agents/skills/autoresearch-coding/SKILL.md +4 -4
- package/.agents/skills/daily-workflow-curator/SKILL.md +3 -3
- package/.agents/skills/parallel-analysis/SKILL.md +160 -0
- package/.agents/skills/path-sensitive-shell-safety/SKILL.md +68 -0
- package/.agents/skills/path-sensitive-shell-safety/references/workflow.md +127 -0
- package/.agents/skills/vibekit-init/SKILL.md +6 -6
- package/.claude/commands/vibe-finalize.md +1 -1
- package/.claude/rules/security.md +2 -0
- package/.claude/rules/tooling.md +1 -1
- package/.claude/skills/agentshield-security-review/SKILL.md +6 -6
- package/.claude/skills/agentshield-security-review/references/native-install.md +10 -10
- package/.claude/skills/agentshield-security-review/references/report-template.md +1 -1
- package/.claude/skills/agentshield-security-review/scripts/agentshield_repo_probe.py +3 -3
- package/.claude/skills/autoresearch-coding/README.md +1 -1
- package/.claude/skills/autoresearch-coding/SKILL.md +4 -4
- package/.claude/skills/daily-workflow-curator/SKILL.md +3 -3
- package/.claude/skills/parallel-analysis/SKILL.md +160 -0
- package/.claude/skills/path-sensitive-shell-safety/SKILL.md +68 -0
- package/.claude/skills/path-sensitive-shell-safety/references/workflow.md +127 -0
- package/.claude/skills/vibekit-init/SKILL.md +6 -6
- package/.codex-plugin/plugin.json +2 -2
- package/.cursor/commands/vibe-finalize.md +1 -1
- package/.cursor/rules/001-vibe-core.mdc +1 -1
- package/.cursor/rules/010-init.mdc +1 -1
- package/.cursor/rules/020-security-agentshield.mdc +2 -2
- package/.cursor/rules/030-autoresearch-loop.mdc +1 -1
- package/.cursor/skills/parallel-analysis/SKILL.md +160 -0
- package/.cursor/skills/path-sensitive-shell-safety/SKILL.md +68 -0
- package/.cursor/skills/path-sensitive-shell-safety/references/workflow.md +127 -0
- package/.vibekit/commands/vibe-finalize.md +3 -0
- package/{.vbkit-docs → .vibekit/docs}/AUTORESEARCH_LEDGER.md +3 -3
- package/{.vbkit-docs → .vibekit/docs}/BACKBONE_REFERENCE.md +1 -1
- package/{.vbkit-docs → .vibekit/docs}/INSTALL.md +16 -16
- package/{.vbkit-docs → .vibekit/docs}/RESEARCH_NOTES.md +1 -1
- package/{.vbkit-docs → .vibekit/docs}/SECURITY_MODEL.md +2 -2
- package/{.vbkit-docs → .vibekit/docs}/TOOLING_GUIDE.md +2 -2
- package/{.vbkit-docs → .vibekit/docs}/templates/CONTEXT_TEMPLATE.md +1 -1
- package/{.vbkit-docs → .vibekit/docs}/templates/PRD_TEMPLATE.md +1 -1
- package/{CLAUDE-template.md → .vibekit/init/CLAUDE-template.md} +1 -1
- package/{FIRST_PROMPT.md → .vibekit/init/FIRST_PROMPT.md} +6 -6
- package/{FIRST_TIME_INIT.md → .vibekit/init/FIRST_TIME_INIT.md} +14 -14
- package/{.vbkit-scripts → .vibekit/scripts}/agentshield-probe.mjs +1 -1
- package/{.vbkit-scripts → .vibekit/scripts}/daily-enhance.mjs +3 -3
- package/{.vbkit-scripts → .vibekit/scripts}/doctor.mjs +6 -6
- package/{.vbkit-scripts → .vibekit/scripts}/init-backbone.mjs +22 -22
- package/{.vbkit-scripts → .vibekit/scripts}/mvck.mjs +61 -25
- package/{.vbkit-scripts → .vibekit/scripts}/test-install.mjs +32 -18
- package/{.vbkit-scripts → .vibekit/scripts}/validate-kit.mjs +47 -31
- package/{.vbkit-scripts → .vibekit/scripts}/vibekit-finalize.mjs +7 -7
- package/{skills → .vibekit/skills}/agentshield-security-review/SKILL.md +6 -6
- package/{skills → .vibekit/skills}/agentshield-security-review/references/native-install.md +10 -10
- package/{skills → .vibekit/skills}/agentshield-security-review/references/report-template.md +1 -1
- package/{skills → .vibekit/skills}/agentshield-security-review/scripts/agentshield_repo_probe.py +3 -3
- package/{skills → .vibekit/skills}/autoresearch-coding/README.md +1 -1
- package/{skills → .vibekit/skills}/autoresearch-coding/SKILL.md +4 -4
- package/{skills → .vibekit/skills}/daily-workflow-curator/SKILL.md +3 -3
- package/.vibekit/skills/parallel-analysis/SKILL.md +160 -0
- package/.vibekit/skills/path-sensitive-shell-safety/SKILL.md +68 -0
- package/.vibekit/skills/path-sensitive-shell-safety/references/workflow.md +127 -0
- package/{skills → .vibekit/skills}/vibekit-init/SKILL.md +6 -6
- package/AGENTS.md +5 -2
- package/CHANGELOG.md +13 -2
- package/CONTRIBUTING.md +3 -3
- package/README.md +133 -394
- package/README.vi.md +135 -334
- package/backbone.yml +8 -7
- package/bin/mvck.js +1 -1
- package/bin/vibe-kit.js +1 -1
- package/install.ps1 +1 -1
- package/install.sh +5 -3
- package/package.json +22 -18
- package/.vbkit-commands/vibe-finalize.md +0 -3
- /package/{.vbkit-commands → .vibekit/commands}/autoresearch-coding.md +0 -0
- /package/{.vbkit-commands → .vibekit/commands}/council.md +0 -0
- /package/{.vbkit-commands → .vibekit/commands}/daily-enhance.md +0 -0
- /package/{.vbkit-commands → .vibekit/commands}/init-vibe.md +0 -0
- /package/{.vbkit-commands → .vibekit/commands}/security-scan.md +0 -0
- /package/{.vbkit-docs → .vibekit/docs}/backbone.schema.json +0 -0
- /package/{.vbkit-scripts → .vibekit/scripts}/pack-dry-run.mjs +0 -0
- /package/{skills → .vibekit/skills}/agentshield-security-review/agents/openai.yaml +0 -0
- /package/{skills → .vibekit/skills}/agentshield-security-review/references/review-checklist.md +0 -0
- /package/{skills → .vibekit/skills}/autoresearch-coding/references/experiment-contract.md +0 -0
- /package/{skills → .vibekit/skills}/autoresearch-coding/references/metric-extraction.md +0 -0
- /package/{skills → .vibekit/skills}/autoresearch-coding/references/result-ledger.md +0 -0
- /package/{skills → .vibekit/skills}/autoresearch-coding/scripts/log_result.py +0 -0
- /package/{skills → .vibekit/skills}/autoresearch-coding/scripts/run_logged.py +0 -0
- /package/{skills → .vibekit/skills}/clearthought/SKILL.md +0 -0
- /package/{skills → .vibekit/skills}/clearthought/examples/decision-framework.md +0 -0
- /package/{skills → .vibekit/skills}/clearthought/examples/metagame-examples.md +0 -0
- /package/{skills → .vibekit/skills}/clearthought/examples/sequential-thinking.md +0 -0
- /package/{skills → .vibekit/skills}/clearthought/references/output-schemas.md +0 -0
- /package/{skills → .vibekit/skills}/clearthought/references/parameter-reference.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/SKILL.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/references/level-0.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/references/level-1.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/references/level-2.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/references/level-3.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/references/level-4.md +0 -0
- /package/{skills → .vibekit/skills}/coding-level/references/level-5.md +0 -0
- /package/{skills → .vibekit/skills}/memento/SKILL.md +0 -0
- /package/{skills → .vibekit/skills}/reviewing-4p-priorities/SKILL.md +0 -0
- /package/{skills → .vibekit/skills}/reviewing-4p-priorities/examples.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/SKILL.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/examples/adaptive-depth.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/examples/branching-exploration.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/examples/linear-reasoning.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/examples/revision-pattern.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/references/output-schema.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/references/parameters.md +0 -0
- /package/{skills → .vibekit/skills}/sequential-thinking/references/patterns.md +0 -0
- /package/{skills → .vibekit/skills}/visual-design-loop/SKILL.md +0 -0
- /package/{skills → .vibekit/skills}/visual-design-loop/agents/openai.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentshield-security-review
|
|
3
|
-
description: repository-native security review workflow for Claude Code and Codex projects using the AgentShield concept. Use when auditing or hardening agent configuration, skills, prompts, hooks, MCP servers, permissions, slash commands, Codex plugin files, Claude plugin files, AGENTS.md, CLAUDE.md, or repository-level AI coding-agent surfaces. Prefer this skill before merging changes to .claude, .codex, .codex-plugin, .claude-plugin, .agents, skills, .
|
|
3
|
+
description: repository-native security review workflow for Claude Code and Codex projects using the AgentShield concept. Use when auditing or hardening agent configuration, skills, prompts, hooks, MCP servers, permissions, slash commands, Codex plugin files, Claude plugin files, AGENTS.md, CLAUDE.md, or repository-level AI coding-agent surfaces. Prefer this skill before merging changes to .claude, .codex, .codex-plugin, .claude-plugin, .agents, .vibekit/skills, .vibekit/commands, .vibekit/scripts, hooks, mcp configs, or generated code that touches agent execution.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# AgentShield Security Review
|
|
@@ -14,7 +14,7 @@ Do not invent findings. Prefer deterministic scanner output when available, then
|
|
|
14
14
|
## Standard workflow
|
|
15
15
|
|
|
16
16
|
1. Identify the repo root and active harness surfaces.
|
|
17
|
-
2. Run `node .
|
|
17
|
+
2. Run `node .vibekit/scripts/agentshield-probe.mjs .` to inventory Claude, Codex, shared skills, hooks, MCP, commands, and repo instruction files.
|
|
18
18
|
3. If Node/npm is available, run AgentShield from the repo root:
|
|
19
19
|
```bash
|
|
20
20
|
npx ecc-agentshield scan --path . --format text
|
|
@@ -34,9 +34,9 @@ Do not invent findings. Prefer deterministic scanner output when available, then
|
|
|
34
34
|
|
|
35
35
|
Use a shared root skill where possible:
|
|
36
36
|
|
|
37
|
-
-
|
|
38
|
-
- Claude Code may add a slash-command shim in `.
|
|
39
|
-
- Codex should consume the same root
|
|
37
|
+
- `.vibekit/skills/agentshield-security-review/SKILL.md` is the canonical workflow.
|
|
38
|
+
- Claude Code may add a slash-command shim in `.vibekit/commands/security-scan.md` or `.claude/commands/security-scan.md`.
|
|
39
|
+
- Codex should consume the same root `.vibekit/skills/` directory through `.codex-plugin/plugin.json` or the repo's native skill/plugin mechanism.
|
|
40
40
|
- Do not duplicate divergent Claude and Codex skill bodies. Duplication causes drift.
|
|
41
41
|
|
|
42
42
|
See `references/native-install.md` for copy-ready Claude and Codex snippets.
|
|
@@ -48,7 +48,7 @@ Prioritize runtime-active files over examples and docs:
|
|
|
48
48
|
1. `CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`
|
|
49
49
|
2. `.claude/settings.json`, `.claude/settings.local.json`, `.claude/agents/*.md`, `.claude/commands/*.md`
|
|
50
50
|
3. `.codex/config.toml`, `.codex/`, `.codex-plugin/plugin.json`
|
|
51
|
-
4. `.agents/`, `agents/`,
|
|
51
|
+
4. `.agents/`, `agents/`, `.vibekit/skills/`, `.vibekit/commands/`, `.vibekit/scripts/`, `hooks/`
|
|
52
52
|
5. `.mcp.json`, `mcp.json`, `mcp-configs/*.json`
|
|
53
53
|
6. installer scripts, CI workflows, package scripts, and generated plugin manifests
|
|
54
54
|
|
|
@@ -7,18 +7,18 @@ Keep one canonical skill and add thin harness adapters.
|
|
|
7
7
|
Recommended repo layout:
|
|
8
8
|
|
|
9
9
|
```text
|
|
10
|
-
skills/agentshield-security-review/SKILL.md
|
|
11
|
-
skills/agentshield-security-review/references/review-checklist.md
|
|
12
|
-
skills/agentshield-security-review/references/report-template.md
|
|
13
|
-
skills/agentshield-security-review/scripts/agentshield_repo_probe.py
|
|
14
|
-
.
|
|
10
|
+
.vibekit/skills/agentshield-security-review/SKILL.md
|
|
11
|
+
.vibekit/skills/agentshield-security-review/references/review-checklist.md
|
|
12
|
+
.vibekit/skills/agentshield-security-review/references/report-template.md
|
|
13
|
+
.vibekit/skills/agentshield-security-review/scripts/agentshield_repo_probe.py
|
|
14
|
+
.vibekit/commands/security-scan.md
|
|
15
15
|
.codex-plugin/plugin.json
|
|
16
16
|
.claude-plugin/plugin.json
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Claude Code command shim
|
|
20
20
|
|
|
21
|
-
Create `.
|
|
21
|
+
Create `.vibekit/commands/security-scan.md` or `.claude/commands/security-scan.md`:
|
|
22
22
|
|
|
23
23
|
```markdown
|
|
24
24
|
---
|
|
@@ -48,7 +48,7 @@ Return grade, score, severity counts, active paths, critical/high findings, and
|
|
|
48
48
|
|
|
49
49
|
## Codex plugin pointer
|
|
50
50
|
|
|
51
|
-
Use the repo-level Codex plugin manifest to point Codex at the same
|
|
51
|
+
Use the repo-level Codex plugin manifest to point Codex at the same `.vibekit/skills/` directory. Exact schema may vary by Codex plugin version, so preserve the existing repo schema and ensure it references the canonical `.vibekit/skills/` directory rather than a copied skill body.
|
|
52
52
|
|
|
53
53
|
Example intent:
|
|
54
54
|
|
|
@@ -56,7 +56,7 @@ Example intent:
|
|
|
56
56
|
{
|
|
57
57
|
"name": "your-repo",
|
|
58
58
|
"version": "0.1.0",
|
|
59
|
-
"skills": "
|
|
59
|
+
"skills": "./.vibekit/skills",
|
|
60
60
|
"mcp": "./.mcp.json"
|
|
61
61
|
}
|
|
62
62
|
```
|
|
@@ -78,8 +78,8 @@ on:
|
|
|
78
78
|
- ".claude-plugin/**"
|
|
79
79
|
- ".agents/**"
|
|
80
80
|
- "agents/**"
|
|
81
|
-
- "skills/**"
|
|
82
|
-
- ".
|
|
81
|
+
- ".vibekit/skills/**"
|
|
82
|
+
- ".vibekit/commands/**"
|
|
83
83
|
- "hooks/**"
|
|
84
84
|
- ".mcp.json"
|
|
85
85
|
- "mcp-configs/**"
|
|
@@ -34,7 +34,7 @@ Use this structure for final reports.
|
|
|
34
34
|
|
|
35
35
|
## Medium/low findings
|
|
36
36
|
|
|
37
|
-
Group by theme: permissions, hooks, MCP, prompts, skills, .
|
|
37
|
+
Group by theme: permissions, hooks, MCP, prompts, skills, .vibekit/docs/examples.
|
|
38
38
|
|
|
39
39
|
## Remediation order
|
|
40
40
|
|
|
@@ -15,9 +15,9 @@ PATTERNS = {
|
|
|
15
15
|
"repo_instructions": ["CLAUDE.md", "AGENTS.md", ".github/copilot-instructions.md"],
|
|
16
16
|
"claude": [".claude", ".claude-plugin", "agents"],
|
|
17
17
|
"codex": [".codex", ".codex-plugin"],
|
|
18
|
-
"shared_skills": ["skills", ".agents/skills"],
|
|
19
|
-
"shared_commands": [".
|
|
20
|
-
"kit_scripts": [".
|
|
18
|
+
"shared_skills": [".vibekit/skills", ".claude/skills", ".cursor/skills", ".agents/skills", "skills"],
|
|
19
|
+
"shared_commands": [".vibekit/commands"],
|
|
20
|
+
"kit_scripts": [".vibekit/scripts"],
|
|
21
21
|
"hooks": ["hooks", ".claude/hooks", ".agents/hooks"],
|
|
22
22
|
"mcp": [".mcp.json", "mcp.json", "mcp-configs"],
|
|
23
23
|
"ci": [".github/workflows"],
|
|
@@ -11,5 +11,5 @@ Example:
|
|
|
11
11
|
For this kit:
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
|
-
/autoresearch-coding goal: improve the kit; metric command: node .
|
|
14
|
+
/autoresearch-coding goal: improve the kit; metric command: node .vibekit/scripts/validate-kit.mjs .; direction: higher; editable paths: .vibekit/docs .vibekit/scripts .vibekit/skills .vibekit/commands .claude .cursor .agents .codex-plugin; budget: 3
|
|
15
15
|
```
|
|
@@ -28,16 +28,16 @@ For this kit itself, use:
|
|
|
28
28
|
|
|
29
29
|
```text
|
|
30
30
|
goal: improve Minimal Vibe Coding Kit quality
|
|
31
|
-
metric command: node .
|
|
31
|
+
metric command: node .vibekit/scripts/validate-kit.mjs .
|
|
32
32
|
direction: higher
|
|
33
|
-
editable paths: .
|
|
33
|
+
editable paths: .vibekit/docs .vibekit/scripts .vibekit/skills .vibekit/commands .claude .cursor .agents .codex-plugin .github README.md AGENTS.md .vibekit/init/CLAUDE-template.md .vibekit/init/FIRST_TIME_INIT.md .vibekit/init/FIRST_PROMPT.md backbone.yml package.json install.sh install.ps1
|
|
34
34
|
protected paths: .git .env* node_modules vendor secrets lockfiles
|
|
35
35
|
budget: 3
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
## Setup
|
|
39
39
|
|
|
40
|
-
1. Read `backbone.yml`. If `meta.template_status` is `uninitialized`, follow
|
|
40
|
+
1. Read `backbone.yml`. If `meta.template_status` is `uninitialized`, follow `.vibekit/init/FIRST_TIME_INIT.md` and wait for explicit approval before experiment edits.
|
|
41
41
|
2. Inspect `git status --short`.
|
|
42
42
|
3. If user changes exist, stop unless the user permits dirty-state experimentation.
|
|
43
43
|
4. Create or switch to an experiment branch named `autoresearch/<date>-<slug>` when a git repo is available. If branch creation is blocked by permissions, ask for approval once and record any approved fallback.
|
|
@@ -78,7 +78,7 @@ For each experiment:
|
|
|
78
78
|
7. Keep good changes; revert discarded or crashed changes.
|
|
79
79
|
8. If a crash is from a trivial patch mistake, fix once and rerun.
|
|
80
80
|
|
|
81
|
-
If a kept change touches agent surfaces such as `AGENTS.md`, `CLAUDE.md`, `.claude/**`, `.cursor/**`, `.agents/**`, `.codex-plugin/**`,
|
|
81
|
+
If a kept change touches agent surfaces such as `AGENTS.md`, `CLAUDE.md`, `.claude/**`, `.cursor/**`, `.agents/**`, `.codex-plugin/**`, `.vibekit/skills/**`, `.vibekit/commands/**`, `.vibekit/scripts/**`, hooks, or MCP config, run the AgentShield probe before final reporting.
|
|
82
82
|
|
|
83
83
|
## Delegation
|
|
84
84
|
|
|
@@ -14,19 +14,19 @@ Run a daily improvement pass that proposes changes, not silent edits.
|
|
|
14
14
|
2. Run:
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
node .
|
|
17
|
+
node .vibekit/scripts/daily-enhance.mjs . --write-report
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
3. Run validation:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
node .
|
|
23
|
+
node .vibekit/scripts/validate-kit.mjs .
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
4. Run AgentShield read-only probe if present:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
node .
|
|
29
|
+
node .vibekit/scripts/agentshield-probe.mjs .
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
5. Identify stale, duplicated, or overly broad rules.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: parallel-analysis
|
|
3
|
+
description: Fan out 2-5 independent read-only analysis lanes across the repo using your configured executor (Cursor CLI Composer, Claude subagents, or Codex CLI), then merge the lane reports and verify them with a refutation pass. Use for repo-wide questions, large uncommitted-diff reviews, multi-doc reading, impact analysis, or consistency audits. On first use it asks which provider/model to use and saves the answer so it never asks again.
|
|
4
|
+
argument-hint: "<analysis question, diff, or review target>"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
effort: medium
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Parallel Analysis (Multi-Agent Fan-Out)
|
|
10
|
+
|
|
11
|
+
Split a large analysis into independent read-only lanes, run them concurrently
|
|
12
|
+
with the configured executor, merge the lane reports, and verify merged claims
|
|
13
|
+
with a skeptical refutation pass. One round of parallel lanes replaces slow
|
|
14
|
+
serial reading; the verification lane replaces manual double-checking.
|
|
15
|
+
|
|
16
|
+
This skill is project-agnostic: it works in any repo where the kit is
|
|
17
|
+
installed, using that repo's `backbone.yml` (if present) for boundaries.
|
|
18
|
+
|
|
19
|
+
## Best Use
|
|
20
|
+
|
|
21
|
+
- Repo-wide questions ("where is X handled, what depends on Y").
|
|
22
|
+
- Reviewing a large uncommitted diff by concern (backend vs frontend vs i18n
|
|
23
|
+
vs scripts).
|
|
24
|
+
- Reading several large docs, plans, or reference trees at once.
|
|
25
|
+
- Pre-change impact analysis across packages/apps listed in `backbone.yml`
|
|
26
|
+
`paths.apps`.
|
|
27
|
+
- Consistency audits (docs vs code, rules vs skills, config vs actual layout).
|
|
28
|
+
|
|
29
|
+
Do NOT use for single-file questions or quick lookups; direct reads are faster.
|
|
30
|
+
|
|
31
|
+
## Executor Setup (first use only)
|
|
32
|
+
|
|
33
|
+
Lane execution is delegated to ONE configured executor. The choice is stored
|
|
34
|
+
in `.vibekit/parallel-analysis.json`; while that file exists and its preflight
|
|
35
|
+
passes, NEVER ask again.
|
|
36
|
+
|
|
37
|
+
1. **If `.vibekit/parallel-analysis.json` exists**: read it, run the matching
|
|
38
|
+
preflight below, and proceed silently on success. If preflight fails
|
|
39
|
+
(binary missing, logged out), tell the user what broke, offer to re-run
|
|
40
|
+
setup, and update the file with their answer.
|
|
41
|
+
2. **If it does not exist**: detect what is available, then ask the user ONE
|
|
42
|
+
question — "Which provider should run parallel analysis lanes?" — using the
|
|
43
|
+
harness-native prompt (AskUserQuestion in Claude Code; a plain chat
|
|
44
|
+
question in Cursor/Codex). Offer, in this order:
|
|
45
|
+
- **Cursor CLI + Composer 2.5 Fast (recommended)** — fastest lane executor;
|
|
46
|
+
requires `cursor-agent` installed and logged in.
|
|
47
|
+
- **Claude subagents** — no extra install; lanes run as read-only Claude
|
|
48
|
+
Code subagents (Explore/general-purpose). Choose this automatically if
|
|
49
|
+
the user declines external CLIs.
|
|
50
|
+
- **Codex CLI** — lanes run via `codex exec` in a read-only sandbox with
|
|
51
|
+
the best available Codex model.
|
|
52
|
+
3. **Resolve the model** for the chosen provider (see per-executor notes),
|
|
53
|
+
confirm the resolved value in one line, and write the config file. Include
|
|
54
|
+
a fallback executor so lanes still run when the primary is unavailable.
|
|
55
|
+
|
|
56
|
+
### Preflights and model resolution
|
|
57
|
+
|
|
58
|
+
- `cursor-cli`: `cursor-agent status` must report logged in (otherwise the
|
|
59
|
+
user runs `cursor-agent login` once). Resolve the model with
|
|
60
|
+
`cursor-agent --list-models` and prefer the Composer 2.5 fast variant
|
|
61
|
+
(e.g. `composer-2.5-fast`); if absent, use the newest Composer model and
|
|
62
|
+
record what was picked.
|
|
63
|
+
- `claude-subagents`: available whenever running inside Claude Code; no
|
|
64
|
+
binary needed. Use read-only subagent types only.
|
|
65
|
+
- `codex-cli`: `codex --version` must succeed. Use the CLI's default/best
|
|
66
|
+
coding model unless the user names one; record the resolved model.
|
|
67
|
+
|
|
68
|
+
### Config file — `.vibekit/parallel-analysis.json`
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"executor": "cursor-cli",
|
|
73
|
+
"model": "composer-2.5-fast",
|
|
74
|
+
"fallback": "claude-subagents",
|
|
75
|
+
"configuredAt": "2026-07-16T07:30:00Z"
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`executor` is one of `cursor-cli` | `claude-subagents` | `codex-cli`. The file
|
|
80
|
+
is local state (gitignored by default); a team may commit it deliberately to
|
|
81
|
+
share a default. To change the choice later, delete the file or ask for
|
|
82
|
+
"parallel-analysis setup" again.
|
|
83
|
+
|
|
84
|
+
## Running a lane (per executor)
|
|
85
|
+
|
|
86
|
+
Every lane is READ-ONLY: search, read, summarize — never edit files, execute
|
|
87
|
+
project binaries, run hooks, or trigger installs/deploys/migrations.
|
|
88
|
+
|
|
89
|
+
- `cursor-cli`:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
cursor-agent -p --mode ask --output-format text \
|
|
93
|
+
--model "<configured-model>" \
|
|
94
|
+
--workspace "<repo-root>" \
|
|
95
|
+
"<lane brief>"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Never pass `--force` or `--yolo`; `--mode ask` keeps Composer read-only.
|
|
99
|
+
One workspace per lane; a question spanning multiple repos becomes one lane
|
|
100
|
+
per repo.
|
|
101
|
+
- `claude-subagents`: launch each lane as a read-only subagent with the lane
|
|
102
|
+
brief as its prompt, all lanes in ONE message so they run concurrently.
|
|
103
|
+
- `codex-cli`:
|
|
104
|
+
|
|
105
|
+
```sh
|
|
106
|
+
codex exec --sandbox read-only -C "<repo-root>" "<lane brief>"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
If the harness cannot run lanes concurrently (plain CLI loop), run them
|
|
110
|
+
back-to-back without changing the briefs — merge and verification stay the
|
|
111
|
+
same.
|
|
112
|
+
|
|
113
|
+
## Workflow
|
|
114
|
+
|
|
115
|
+
1. **Scope.** State the question in one sentence. Split it into 2-5 lanes that
|
|
116
|
+
are independent of each other (by directory, package, concern, or doc set).
|
|
117
|
+
If lanes would depend on each other's output, merge them or run two rounds.
|
|
118
|
+
2. **Brief.** Give each lane a numbered brief: exact paths, the questions to
|
|
119
|
+
answer, and the required return format ("facts only, numbered sections,
|
|
120
|
+
findings as `file:line — issue — why it matters`").
|
|
121
|
+
3. **Launch all lanes at once** with the configured executor.
|
|
122
|
+
4. **Prepare while waiting.** Build the merge skeleton; do not duplicate lane
|
|
123
|
+
work.
|
|
124
|
+
5. **Merge.** Combine lane reports into one findings list. Mark conflicts
|
|
125
|
+
between lanes and unknowns explicitly — never average away a disagreement.
|
|
126
|
+
6. **Verify.** Run one verification lane that receives the merged claims (not
|
|
127
|
+
the reasoning) with the instruction: "Default-skeptical: confirm or refute
|
|
128
|
+
each claim against the repo with file:line evidence." Drop or re-investigate
|
|
129
|
+
every refuted claim; never silently keep one.
|
|
130
|
+
7. **Deliver.** Report merged findings, what was verified, and remaining
|
|
131
|
+
unknowns. For issue triage, classify surviving findings with the
|
|
132
|
+
`reviewing-4p-priorities` skill (P0-P4). Decisions and edits stay in the
|
|
133
|
+
main session under the repo's normal review rules.
|
|
134
|
+
|
|
135
|
+
## Lane brief template
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
Lane <n>: <one-line purpose>
|
|
139
|
+
Workspace: <repo root>
|
|
140
|
+
Paths: <exact dirs/files>
|
|
141
|
+
Read-only. Do not modify anything or execute binaries/scripts.
|
|
142
|
+
Questions:
|
|
143
|
+
1. <specific question>
|
|
144
|
+
2. <specific question>
|
|
145
|
+
Return: numbered sections matching the questions, facts only,
|
|
146
|
+
findings as file:line — issue — why it matters.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Guardrails
|
|
150
|
+
|
|
151
|
+
- 2-5 lanes per round; needing more means the question is under-scoped.
|
|
152
|
+
- Lanes are read-only; only the main session edits files. Agent-surface edits
|
|
153
|
+
(`backbone.yml`, `AGENTS.md`, `CLAUDE.md`, `.claude/**`, `.cursor/**`,
|
|
154
|
+
`.agents/**`, `.codex/**`, kit skills/commands) additionally require the
|
|
155
|
+
`agentshield-security-review` skill afterwards.
|
|
156
|
+
- Respect `backbone.yml` `policy.protected_paths` in every lane brief.
|
|
157
|
+
- Never put secrets in lane briefs or executor prompts: no `.env*` contents,
|
|
158
|
+
credentials, tokens, private keys, or customer data.
|
|
159
|
+
- This skill produces analysis, not decisions; a lane may not conclude
|
|
160
|
+
"therefore change X" without main-session review.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: path-sensitive-shell-safety
|
|
3
|
+
description: Guardrail workflow for shell changes that use path variables, remote base directories, repo folders, checkout repair, or destructive filesystem commands such as rm, mv, cp, rsync, find -delete, git clean, or git reset.
|
|
4
|
+
argument-hint: "<script path, command, or safety review target>"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
effort: medium
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Path-Sensitive Shell Safety
|
|
10
|
+
|
|
11
|
+
Use this skill before editing or reviewing shell, deploy, installer, cleanup, or repair logic that builds filesystem paths from variables or touches remote repositories.
|
|
12
|
+
|
|
13
|
+
Common triggers:
|
|
14
|
+
|
|
15
|
+
- Path variables such as `remote_base`, `repo_dir`, `repo_folder`, `target_dir`, `backup_dir`, `worktree`, `site`, `app`, or user-entered folder names.
|
|
16
|
+
- Destructive or path-sensitive commands: `rm`, `mv`, `cp -a`, `rsync --delete`, `find -delete`, `docker volume rm`, `git clean`, `git reset`, checkout repair, clone replacement, or symlink-sensitive copy.
|
|
17
|
+
- Git sync that decides which branch or remote checkout will be deployed.
|
|
18
|
+
|
|
19
|
+
## Safety objective
|
|
20
|
+
|
|
21
|
+
No empty, unset, broad, symlinked, or unintended path may reach a destructive command. Validate values before joining paths, validate the joined path before use, and validate containment immediately before the command.
|
|
22
|
+
|
|
23
|
+
## Required workflow
|
|
24
|
+
|
|
25
|
+
1. Identify the command with the highest blast radius.
|
|
26
|
+
2. List every variable that contributes to its path or repository target.
|
|
27
|
+
3. Classify each variable:
|
|
28
|
+
- trusted constant;
|
|
29
|
+
- config value;
|
|
30
|
+
- remote/server value;
|
|
31
|
+
- user/operator input;
|
|
32
|
+
- derived path.
|
|
33
|
+
4. Validate raw inputs before joining:
|
|
34
|
+
- required and non-empty;
|
|
35
|
+
- expected shape: absolute base path or safe single folder segment;
|
|
36
|
+
- no traversal, newlines, glob metacharacters, leading option dash, or control characters;
|
|
37
|
+
- explicit allowlist for server roots when possible.
|
|
38
|
+
5. Join paths with quoted expansions only. Do not use `eval`.
|
|
39
|
+
6. Canonicalize existing paths with physical resolution (`pwd -P` or `realpath`) before destructive work.
|
|
40
|
+
7. Assert containment:
|
|
41
|
+
- target is inside the approved base;
|
|
42
|
+
- target is not `/`, `.`, `..`, `$HOME`, the base root itself, or another broad system directory;
|
|
43
|
+
- target is not a symlink unless the operation explicitly supports symlinks.
|
|
44
|
+
8. Put the final guard directly next to the dangerous command.
|
|
45
|
+
9. Use command terminators and quoting: `-- "$path"` where supported.
|
|
46
|
+
10. For Git sync, verify expected origin, selected branch policy, fetch success, clean worktree, fast-forward state, and final `HEAD == origin/<branch>` before build/deploy.
|
|
47
|
+
11. Run the repo validation command and AgentShield probe when this changes agent surfaces or automation rules.
|
|
48
|
+
|
|
49
|
+
## Required outcomes
|
|
50
|
+
|
|
51
|
+
- A blank branch may follow the documented default-branch fallback policy.
|
|
52
|
+
- An explicit branch must fail if missing; never silently deploy another branch.
|
|
53
|
+
- A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
|
|
54
|
+
- A repair flow may move an unusable checkout to a timestamped backup only after a verified replacement exists.
|
|
55
|
+
- No automatic cleanup should delete backups, locks, runtime data, uploads, volumes, databases, or environment files without separate explicit confirmation.
|
|
56
|
+
|
|
57
|
+
## Review priority
|
|
58
|
+
|
|
59
|
+
Use `reviewing-4p-priorities` if triage is needed:
|
|
60
|
+
|
|
61
|
+
- P0: unsafe path command already caused data loss or can expose/delete secrets in the active environment.
|
|
62
|
+
- P1: unchecked empty/broad variable can reach destructive commands in deploy/repair/install paths.
|
|
63
|
+
- P2: guard exists but misses edge cases such as symlinks, traversal, explicit branch fallback, or wrong origin.
|
|
64
|
+
- P3/P4: documentation clarity or minor naming improvements after the safety invariant is already enforced.
|
|
65
|
+
|
|
66
|
+
## Reference
|
|
67
|
+
|
|
68
|
+
Use `references/workflow.md` for copy-ready guard patterns and review checklist.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Path-Sensitive Shell Safety Reference
|
|
2
|
+
|
|
3
|
+
This reference gives reusable guard patterns for shell scripts. Adapt names and allowlists to the repo, but keep the invariant: validate raw input, validate the joined path, then guard immediately before the dangerous command.
|
|
4
|
+
|
|
5
|
+
## Baseline guard functions
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
die() {
|
|
9
|
+
printf 'ERROR: %s\n' "$*" >&2
|
|
10
|
+
exit 1
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
require_nonempty() {
|
|
14
|
+
local name="${1:?missing name}"
|
|
15
|
+
local value="${2-}"
|
|
16
|
+
[[ -n "$value" ]] || die "$name is required"
|
|
17
|
+
[[ "$value" != *$'\n'* && "$value" != *$'\r'* ]] || die "$name contains a newline"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
validate_abs_base_path() {
|
|
21
|
+
local name="${1:?missing name}"
|
|
22
|
+
local value="${2-}"
|
|
23
|
+
require_nonempty "$name" "$value"
|
|
24
|
+
[[ "$value" == /* ]] || die "$name must be an absolute path: $value"
|
|
25
|
+
[[ "$value" != "/" && "$value" != "." && "$value" != ".." ]] || die "$name is too broad: $value"
|
|
26
|
+
[[ "$value" != *"/../"* && "$value" != *"/./"* && "$value" != *"//"* ]] || die "$name contains unsafe traversal: $value"
|
|
27
|
+
case "$value" in
|
|
28
|
+
/bin|/boot|/dev|/etc|/home|/lib|/lib64|/opt|/private|/root|/sbin|/srv|/sys|/tmp|/usr|/var)
|
|
29
|
+
die "$name points at a broad system directory: $value"
|
|
30
|
+
;;
|
|
31
|
+
esac
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
validate_folder_segment() {
|
|
35
|
+
local name="${1:?missing name}"
|
|
36
|
+
local value="${2-}"
|
|
37
|
+
require_nonempty "$name" "$value"
|
|
38
|
+
[[ "$value" != -* ]] || die "$name must not start with '-': $value"
|
|
39
|
+
[[ "$value" != "." && "$value" != ".." ]] || die "$name is unsafe: $value"
|
|
40
|
+
[[ "$value" != */* && "$value" != *\\* ]] || die "$name must be one folder segment: $value"
|
|
41
|
+
[[ "$value" =~ ^[A-Za-z0-9._#@+=:-]+$ ]] || die "$name contains unsupported characters: $value"
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
join_child_path() {
|
|
45
|
+
local base="${1:?missing base}"
|
|
46
|
+
local child="${2:?missing child}"
|
|
47
|
+
printf '%s/%s\n' "${base%/}" "$child"
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Containment guard
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
canonical_existing_dir() {
|
|
55
|
+
local path_value="${1:?missing path}"
|
|
56
|
+
[[ -d "$path_value" ]] || die "not a directory: $path_value"
|
|
57
|
+
[[ ! -L "$path_value" ]] || die "refusing symlink directory: $path_value"
|
|
58
|
+
(cd -P -- "$path_value" && pwd) || die "cannot resolve directory: $path_value"
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
assert_child_under_parent() {
|
|
62
|
+
local parent="${1:?missing parent}"
|
|
63
|
+
local child="${2:?missing child}"
|
|
64
|
+
[[ "$child" != "$parent" ]] || die "refusing to operate on parent directory itself: $child"
|
|
65
|
+
case "$child" in
|
|
66
|
+
"$parent"/*) ;;
|
|
67
|
+
*) die "path escapes parent: child=$child parent=$parent" ;;
|
|
68
|
+
esac
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Safer remove wrapper
|
|
73
|
+
|
|
74
|
+
Use a wrapper instead of inline deletion when a path contains variables.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
safe_rm_rf_dir() {
|
|
78
|
+
local label="${1:?missing label}"
|
|
79
|
+
local target="${2-}"
|
|
80
|
+
local allowed_parent="${3-}"
|
|
81
|
+
|
|
82
|
+
validate_abs_base_path "$label target" "$target"
|
|
83
|
+
validate_abs_base_path "$label allowed parent" "$allowed_parent"
|
|
84
|
+
|
|
85
|
+
[[ -d "$target" ]] || die "$label target is not an existing directory: $target"
|
|
86
|
+
[[ ! -L "$target" ]] || die "$label target is a symlink: $target"
|
|
87
|
+
|
|
88
|
+
local parent_real
|
|
89
|
+
parent_real="$(canonical_existing_dir "$allowed_parent")"
|
|
90
|
+
|
|
91
|
+
local target_real
|
|
92
|
+
target_real="$(canonical_existing_dir "$target")"
|
|
93
|
+
|
|
94
|
+
assert_child_under_parent "$parent_real" "$target_real"
|
|
95
|
+
rm -rf -- "$target_real"
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Never call the wrapper with a broad parent such as `/`, `/opt`, `/var`, `/tmp`, or `$HOME`. Use the narrowest app-owned parent.
|
|
100
|
+
|
|
101
|
+
## Git sync guard checklist
|
|
102
|
+
|
|
103
|
+
- Validate the checkout directory is inside the approved app base.
|
|
104
|
+
- Validate the origin URL or host matches the expected repository.
|
|
105
|
+
- Fetch with bounded timeout and non-interactive credentials.
|
|
106
|
+
- Explicit branch:
|
|
107
|
+
- require the exact remote branch;
|
|
108
|
+
- fail with an actionable message if it is missing.
|
|
109
|
+
- Blank branch:
|
|
110
|
+
- current valid upstream;
|
|
111
|
+
- remote default branch;
|
|
112
|
+
- `main`;
|
|
113
|
+
- `master`.
|
|
114
|
+
- Refuse dirty, local-ahead, or diverged worktrees unless the operator chooses a guided repair command.
|
|
115
|
+
- After sync, verify `git rev-parse HEAD` equals `git rev-parse "origin/<branch>"`.
|
|
116
|
+
- Build or deploy only after the equality check passes.
|
|
117
|
+
|
|
118
|
+
## Review checklist
|
|
119
|
+
|
|
120
|
+
- Are all path variables checked with `[[ -n "$value" ]]` or a stronger helper before use?
|
|
121
|
+
- Are folder names validated as segments before joining?
|
|
122
|
+
- Is the final path canonicalized or otherwise proven inside the base?
|
|
123
|
+
- Is the destructive command adjacent to its guard?
|
|
124
|
+
- Does the command use quoted expansions and `--` where available?
|
|
125
|
+
- Does the code fail closed for missing explicit branches?
|
|
126
|
+
- Does repair preserve runtime data and keep backups instead of deleting them?
|
|
127
|
+
- Does validation cover empty values, traversal, symlink, wrong origin, dirty checkout, branch with `#`, and missing branch?
|
|
@@ -11,15 +11,15 @@ Initialize the kit safely.
|
|
|
11
11
|
|
|
12
12
|
## Required behavior
|
|
13
13
|
|
|
14
|
-
1. Print the requirements checklist from
|
|
14
|
+
1. Print the requirements checklist from `.vibekit/init/FIRST_TIME_INIT.md`.
|
|
15
15
|
2. Run or emulate detection, including repo-specific conventions, project mode, and PRD presence:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
node .
|
|
18
|
+
node .vibekit/scripts/init-backbone.mjs . --propose
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
3. Run the project-understanding step below.
|
|
22
|
-
4. Propose a unified diff for `backbone.yml`, its `conventions` rules, managed blocks, and any new `.
|
|
22
|
+
4. Propose a unified diff for `backbone.yml`, its `conventions` rules, managed blocks, and any new `.vibekit/docs/PRD.md`.
|
|
23
23
|
5. Ask: `Apply this proposed backbone and convention rules? Reply yes, edit, or abort.`
|
|
24
24
|
6. Write only after explicit `yes`.
|
|
25
25
|
7. Validate after writing.
|
|
@@ -29,9 +29,9 @@ node .vbkit-scripts/init-backbone.mjs . --propose
|
|
|
29
29
|
Detection reports `project.mode` (`greenfield` = no source yet, `brownfield` = existing code) and whether a PRD exists.
|
|
30
30
|
|
|
31
31
|
- Always offer a short interview, regardless of whether docs already exist: what the project is and who it is for, the core problem and primary focus now, what success looks like, key constraints/non-goals, and (brownfield) which area to improve first.
|
|
32
|
-
- If no PRD is found, propose creating `.
|
|
32
|
+
- If no PRD is found, propose creating `.vibekit/docs/PRD.md` from `.vibekit/docs/templates/PRD_TEMPLATE.md` using the answers, and set `project.prd` to that path.
|
|
33
33
|
- If a PRD exists, read it, link it in `project.prd`, and offer to refresh it without overwriting unapproved content.
|
|
34
|
-
- Keep the PRD short; it captures intent, not a full spec. Record domain terms in `.
|
|
34
|
+
- Keep the PRD short; it captures intent, not a full spec. Record domain terms in `.vibekit/docs/CONTEXT.md` (scaffold from `.vibekit/docs/templates/CONTEXT_TEMPLATE.md`) and link it in `project.context`.
|
|
35
35
|
|
|
36
36
|
## Convention detection
|
|
37
37
|
|
|
@@ -49,4 +49,4 @@ Detection reports `project.mode` (`greenfield` = no source yet, `brownfield` = e
|
|
|
49
49
|
|
|
50
50
|
## Completion
|
|
51
51
|
|
|
52
|
-
Report initialized status, validation command, validation result, PRD path, and next recommended skill. Once the user confirms setup is complete, offer graduation (`node .
|
|
52
|
+
Report initialized status, validation command, validation result, PRD path, and next recommended skill. Once the user confirms setup is complete, offer graduation (`node .vibekit/scripts/vibekit-finalize.mjs . --propose`) to move one-time bootstrap files into the cleanup folder.
|
|
@@ -4,4 +4,4 @@ description: Graduate the project after init — move one-time bootstrap files i
|
|
|
4
4
|
|
|
5
5
|
# vibe-finalize
|
|
6
6
|
|
|
7
|
-
Graduate this project once init and the first prompt are complete. Run `node .
|
|
7
|
+
Graduate this project once init and the first prompt are complete. Run `node .vibekit/scripts/vibekit-finalize.mjs . --propose` to preview, then `--write --yes` to move one-time bootstrap files (.vibekit/init/FIRST_TIME_INIT.md, .vibekit/init/FIRST_PROMPT.md, .vibekit/init/PUSH_TO_GITHUB.md, .vibekit/init/CLAUDE-template.md) into `_vibekit-cleanup/` for deletion. It refuses to run on the kit source repo and is reversible with `--restore --write`.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
# Security rules
|
|
2
2
|
|
|
3
3
|
Run `/security-scan` for changes to agent surfaces, commands, hooks, MCP, skills, or installer scripts. Do not run untrusted hooks, MCP servers, deploys, migrations, or remote installers during review.
|
|
4
|
+
|
|
5
|
+
Use the `path-sensitive-shell-safety` skill before changing shell/deploy/installer/repair logic that builds paths from variables or can delete, move, copy, replace, clean, or reset files.
|
package/.claude/rules/tooling.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Tooling rules
|
|
2
2
|
|
|
3
3
|
- Claude skills live in `.claude/skills/<name>/SKILL.md`.
|
|
4
|
-
- Shared canonical skills live in
|
|
4
|
+
- Shared canonical skills live in `.vibekit/skills/<name>/`.
|
|
5
5
|
- Keep root `CLAUDE.md` concise; import `AGENTS.md` when possible.
|
|
6
6
|
- Put path-specific guidance in `.claude/rules/` rather than the root file.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentshield-security-review
|
|
3
|
-
description: repository-native security review workflow for Claude Code and Codex projects using the AgentShield concept. Use when auditing or hardening agent configuration, skills, prompts, hooks, MCP servers, permissions, slash commands, Codex plugin files, Claude plugin files, AGENTS.md, CLAUDE.md, or repository-level AI coding-agent surfaces. Prefer this skill before merging changes to .claude, .codex, .codex-plugin, .claude-plugin, .agents, skills, .
|
|
3
|
+
description: repository-native security review workflow for Claude Code and Codex projects using the AgentShield concept. Use when auditing or hardening agent configuration, skills, prompts, hooks, MCP servers, permissions, slash commands, Codex plugin files, Claude plugin files, AGENTS.md, CLAUDE.md, or repository-level AI coding-agent surfaces. Prefer this skill before merging changes to .claude, .codex, .codex-plugin, .claude-plugin, .agents, .vibekit/skills, .vibekit/commands, .vibekit/scripts, hooks, mcp configs, or generated code that touches agent execution.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# AgentShield Security Review
|
|
@@ -14,7 +14,7 @@ Do not invent findings. Prefer deterministic scanner output when available, then
|
|
|
14
14
|
## Standard workflow
|
|
15
15
|
|
|
16
16
|
1. Identify the repo root and active harness surfaces.
|
|
17
|
-
2. Run `node .
|
|
17
|
+
2. Run `node .vibekit/scripts/agentshield-probe.mjs .` to inventory Claude, Codex, shared skills, hooks, MCP, commands, and repo instruction files.
|
|
18
18
|
3. If Node/npm is available, run AgentShield from the repo root:
|
|
19
19
|
```bash
|
|
20
20
|
npx ecc-agentshield scan --path . --format text
|
|
@@ -34,9 +34,9 @@ Do not invent findings. Prefer deterministic scanner output when available, then
|
|
|
34
34
|
|
|
35
35
|
Use a shared root skill where possible:
|
|
36
36
|
|
|
37
|
-
-
|
|
38
|
-
- Claude Code may add a slash-command shim in `.
|
|
39
|
-
- Codex should consume the same root
|
|
37
|
+
- `.vibekit/skills/agentshield-security-review/SKILL.md` is the canonical workflow.
|
|
38
|
+
- Claude Code may add a slash-command shim in `.vibekit/commands/security-scan.md` or `.claude/commands/security-scan.md`.
|
|
39
|
+
- Codex should consume the same root `.vibekit/skills/` directory through `.codex-plugin/plugin.json` or the repo's native skill/plugin mechanism.
|
|
40
40
|
- Do not duplicate divergent Claude and Codex skill bodies. Duplication causes drift.
|
|
41
41
|
|
|
42
42
|
See `references/native-install.md` for copy-ready Claude and Codex snippets.
|
|
@@ -48,7 +48,7 @@ Prioritize runtime-active files over examples and docs:
|
|
|
48
48
|
1. `CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`
|
|
49
49
|
2. `.claude/settings.json`, `.claude/settings.local.json`, `.claude/agents/*.md`, `.claude/commands/*.md`
|
|
50
50
|
3. `.codex/config.toml`, `.codex/`, `.codex-plugin/plugin.json`
|
|
51
|
-
4. `.agents/`, `agents/`,
|
|
51
|
+
4. `.agents/`, `agents/`, `.vibekit/skills/`, `.vibekit/commands/`, `.vibekit/scripts/`, `hooks/`
|
|
52
52
|
5. `.mcp.json`, `mcp.json`, `mcp-configs/*.json`
|
|
53
53
|
6. installer scripts, CI workflows, package scripts, and generated plugin manifests
|
|
54
54
|
|