skeleton: plugin layout + docs, skill/agent migration deferred to iter 1

Establishes the repository structure for the skills plugin:
- README + INSTALL describing the two-layer split (plugin
  mechanics vs per-project profile)
- docs/design, profile-schema, pipeline, agent-template covering
  the universal discipline constants and the profile slot model
- templates/project-profile.yml as a copy-and-fill starting point
- templates/CLAUDE.md.fragment with the baseline orchestrator
  rules a project can import
- install.sh / uninstall.sh wiring skills/ + agents/ into
  ~/.claude/ via idempotent symlinks
- skills/ and agents/ directories empty except for migration
  READMEs; the actual SKILL bodies and agent files migrate
  from ~/dev/ailang/skills/ in the next iteration.

No skill or agent runs yet — this commit only stands up the
structure and documents the substitution model.
This commit is contained in:
2026-05-28 14:20:13 +02:00
commit 253273b007
13 changed files with 1039 additions and 0 deletions
Executable
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
# Install the skills plugin globally into ~/.claude/.
#
# Creates symlinks from ~/.claude/skills/<name> and
# ~/.claude/agents/<name> into this repo's skills/ and agents/
# subdirectories. Idempotent — existing symlinks pointing to
# this repo are left alone; existing entries that point elsewhere
# are reported and skipped.
set -euo pipefail
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CLAUDE_SKILLS="$HOME/.claude/skills"
CLAUDE_AGENTS="$HOME/.claude/agents"
mkdir -p "$CLAUDE_SKILLS" "$CLAUDE_AGENTS"
link_one() {
local src="$1"
local dst="$2"
if [ -L "$dst" ]; then
local existing
existing="$(readlink "$dst")"
if [ "$existing" = "$src" ]; then
echo "ok $dst -> $src"
return 0
fi
echo "skip $dst already symlinked to $existing"
return 0
fi
if [ -e "$dst" ]; then
echo "skip $dst exists and is not a symlink"
return 0
fi
ln -s "$src" "$dst"
echo "link $dst -> $src"
}
if [ -d "$REPO_DIR/skills" ]; then
for s in "$REPO_DIR"/skills/*/; do
[ -d "$s" ] || continue
name="$(basename "$s")"
link_one "$s" "$CLAUDE_SKILLS/$name"
done
fi
if [ -d "$REPO_DIR/agents" ]; then
for a in "$REPO_DIR"/agents/*/; do
[ -d "$a" ] || continue
name="$(basename "$a")"
link_one "$a" "$CLAUDE_AGENTS/$name"
done
fi
echo
echo "Install complete."
echo "Next: drop a profile into each project that should use the plugin:"
echo " cp $REPO_DIR/templates/project-profile.yml <project>/.claude/dev-cycle-profile.yml"