chore: remove stale chunk/skills references from vision, scripts, and tests
## Why The repo moved from a chunk-based delivery model with `.agents/skills/` as the canonical skill source to a plugin model. Several files retained references to the old model that were either dead code or misleading framing. ## Impact - `tests/test-install.sh`: dead `.agents/skills/` test blocks removed; suite now tests only what `install.sh` actually deploys - `scripts/deploy-manifest.sh`: `DEPLOY_SKILLS_SRC` variable and stale `sync.sh (Chunk 6)` comment removed - `tests/test-git-hooks-install.sh`: fixture stub no longer declares the removed `DEPLOY_SKILLS_SRC` variable - `docs/VISION.md`: chunk delivery framing replaced with plugin model language throughout; manual test plan date updated - `tests/test-instructions-and-docs.sh`: stale test plan date flagged as pre-refactor so readers know a re-run is needed Refs: #15 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -19,8 +19,8 @@ Designed to start as a personal homelab tool and grow into something shareable w
|
||||
|
||||
- Automatic push-based sync to projects
|
||||
- Runtime dependency from projects back to this repo
|
||||
- Bootstrapping new projects (`init-project.sh` comes in chunk 6)
|
||||
- GitHub Copilot support (chunk 7)
|
||||
- Bootstrapping new projects (`init-project.sh` — not yet built)
|
||||
- GitHub Copilot support (not yet built)
|
||||
|
||||
## Current architecture
|
||||
|
||||
@@ -30,9 +30,9 @@ See `docs/spec/architecture.md` for the deployed directory structure, content de
|
||||
|
||||
V1 is "ready to develop" — not a finished product. It means this repo is structured, Claude Code is wired up to it, and there is enough initial content to start building incrementally.
|
||||
|
||||
**V1 = Chunk 1 complete — ✅ done.**
|
||||
**V1 = core install pipeline complete — ✅ done.**
|
||||
|
||||
Everything from chunk 2 onward is content and tooling built on top of that foundation.
|
||||
All content and tooling is built incrementally on top of that foundation via plugins.
|
||||
|
||||
## Long-term: Management Application
|
||||
|
||||
@@ -56,7 +56,7 @@ Browse, edit, and configure AI development config through a proper product UI.
|
||||
- Hosting: self-hosted first, cloud-hosted option later
|
||||
- Users: solo-first, multi-user-ready data model from day one
|
||||
|
||||
**Start trigger:** after Chunk 6 of this repo (`sync.sh` + `init-project.sh`). Full content model and sync tooling must be stable before building a UI over them.
|
||||
**Start trigger:** when the plugin content model and sync tooling are stable. Full content model must be stable before building a UI over it.
|
||||
|
||||
**Mobile/desktop (Phase 3):** React → React Native for mobile; Tauri to wrap the web app for desktop.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# Deployment manifest — sourced by install.sh and sync.sh (Chunk 6).
|
||||
# Deployment manifest — sourced by install.sh.
|
||||
# All paths: src relative to REPO_ROOT, dest relative to HOME.
|
||||
# Format: "src:dest"
|
||||
|
||||
@@ -21,7 +21,4 @@ DEPLOY_DIRS=(
|
||||
"core:.claude/core"
|
||||
)
|
||||
|
||||
# Skills — merged per-skill into canonical location (parent not wiped, user skills preserved)
|
||||
DEPLOY_SKILLS_SRC=".agents/skills"
|
||||
|
||||
# Provider skill adapters are declared in providers/*/provider-manifest.sh, not here.
|
||||
|
||||
@@ -32,7 +32,6 @@ cat > "$TEMP_REPO/scripts/deploy-manifest.sh" << 'EOF'
|
||||
DEPLOY_FILES=()
|
||||
DEPLOY_EXECUTABLES=()
|
||||
DEPLOY_DIRS=()
|
||||
DEPLOY_SKILLS_SRC=".agents/skills"
|
||||
EOF
|
||||
|
||||
# Copy the real install.sh and git-hooks into the temp repo
|
||||
|
||||
@@ -59,59 +59,6 @@ else
|
||||
fail "\$HOME/.agents/AGENTS.md — missing or differs from source"
|
||||
fi
|
||||
|
||||
if [[ -d "$REPO_ROOT/.agents/skills" ]]; then
|
||||
echo ""
|
||||
echo "--- skills deployed to ~/.agents/skills/ ---"
|
||||
while IFS= read -r -d '' src_skill; do
|
||||
skill_name="$(basename "$src_skill")"
|
||||
dest_skill="$TEMP_HOME/.agents/skills/$skill_name"
|
||||
if [[ -d "$dest_skill" ]]; then
|
||||
pass "$skill_name deployed to ~/.agents/skills/"
|
||||
else
|
||||
fail "$skill_name missing from ~/.agents/skills/"
|
||||
fi
|
||||
done < <(find "$REPO_ROOT/.agents/skills" -mindepth 1 -maxdepth 1 -type d -print0)
|
||||
|
||||
echo ""
|
||||
echo "--- skill files match source ---"
|
||||
while IFS= read -r -d '' src; do
|
||||
rel="${src#"$REPO_ROOT/.agents/skills/"}"
|
||||
dest="$TEMP_HOME/.agents/skills/$rel"
|
||||
if diff -q "$src" "$dest" > /dev/null 2>&1; then
|
||||
pass "skills/$rel matches source"
|
||||
else
|
||||
fail "skills/$rel — missing or differs from source"
|
||||
fi
|
||||
done < <(find "$REPO_ROOT/.agents/skills" -type f -print0)
|
||||
|
||||
echo ""
|
||||
echo "--- skills correctly replaced on second install (no double-nesting) ---"
|
||||
first_skill="$(find "$REPO_ROOT/.agents/skills" -mindepth 1 -maxdepth 1 -type d | head -1)"
|
||||
if [[ -n "$first_skill" ]]; then
|
||||
skill_name="$(basename "$first_skill")"
|
||||
nested="$TEMP_HOME/.agents/skills/$skill_name/$skill_name"
|
||||
if [[ -d "$nested" ]]; then
|
||||
fail "$skill_name/$skill_name exists — skill was nested instead of replaced"
|
||||
else
|
||||
pass "$skill_name not double-nested after second install"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "--- user skills preserved after install (merge, not wipe) ---"
|
||||
TEMP_HOME2="$(mktemp -d)"
|
||||
trap 'rm -rf "$TEMP_HOME2"' EXIT
|
||||
# Pre-create a user skill not in the source
|
||||
mkdir -p "$TEMP_HOME2/.agents/skills/my-custom-skill"
|
||||
echo "custom" > "$TEMP_HOME2/.agents/skills/my-custom-skill/SKILL.md"
|
||||
HOME="$TEMP_HOME2" bash "$REPO_ROOT/scripts/install.sh" > /dev/null
|
||||
if [[ -f "$TEMP_HOME2/.agents/skills/my-custom-skill/SKILL.md" ]]; then
|
||||
pass "pre-existing user skill preserved after install"
|
||||
else
|
||||
fail "pre-existing user skill was wiped by install"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "--- idempotency: second run state is correct ---"
|
||||
if HOME="$TEMP_HOME" bash "$REPO_ROOT/scripts/install.sh" > /dev/null 2>&1; then
|
||||
@@ -120,30 +67,6 @@ else
|
||||
fail "second run failed"
|
||||
fi
|
||||
|
||||
if [[ -d "$REPO_ROOT/.agents/skills" ]]; then
|
||||
# skill files still match source after second run
|
||||
while IFS= read -r -d '' src; do
|
||||
rel="${src#"$REPO_ROOT/.agents/skills/"}"
|
||||
dest="$TEMP_HOME/.agents/skills/$rel"
|
||||
if diff -q "$src" "$dest" > /dev/null 2>&1; then
|
||||
pass "idempotent: skills/$rel correct after second install"
|
||||
else
|
||||
fail "idempotent: skills/$rel corrupted after second install"
|
||||
fi
|
||||
done < <(find "$REPO_ROOT/.agents/skills" -type f -print0)
|
||||
|
||||
# no double-nesting after second run
|
||||
while IFS= read -r -d '' skill_dir; do
|
||||
skill_name="$(basename "$skill_dir")"
|
||||
nested="$TEMP_HOME/.agents/skills/$skill_name/$skill_name"
|
||||
if [[ -d "$nested" ]]; then
|
||||
fail "idempotent: $skill_name double-nested after second install"
|
||||
else
|
||||
pass "idempotent: $skill_name not double-nested after second install"
|
||||
fi
|
||||
done < <(find "$REPO_ROOT/.agents/skills" -mindepth 1 -maxdepth 1 -type d -print0)
|
||||
fi
|
||||
|
||||
# AGENTS.md still correct after second run
|
||||
if diff -q "$REPO_ROOT/core/AGENTS.md" "$TEMP_HOME/.agents/AGENTS.md" > /dev/null 2>&1; then
|
||||
pass "idempotent: ~/.agents/AGENTS.md correct after second install"
|
||||
|
||||
@@ -284,7 +284,7 @@ echo "────────────────────────
|
||||
echo "MANUAL TEST PLAN (run in a fresh Claude session)"
|
||||
echo "─────────────────────────────────────────────────────"
|
||||
echo ""
|
||||
echo "Results last run: 2026-05-17 (multiple rounds)"
|
||||
echo "Results last run: 2026-06-28 (pre-plugin-refactor; re-run needed)"
|
||||
echo " PASS: 1, 2, 3, 5, 6, 7, 8, 9"
|
||||
echo " INCONCLUSIVE: 4 (no remote configured in test environment)"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user