feat(kyberforge): retarget forge skills to author/audit APM content #93
@@ -91,6 +91,9 @@ ROOT="$(cd "$ROOT" && pwd)"
|
||||
# (plugin/APM scope) — stop and return it.
|
||||
# - an apm.yml with no `type:` field is a marketplace-only manifest — skip
|
||||
# it, keep walking up.
|
||||
# - reaching $HOME marks the user-scope boundary — stop, even if $HOME is
|
||||
# itself a .git-tracked dotfiles directory (checked before the .git test
|
||||
# below, so a dotfiles repo at $HOME can't shadow user scope).
|
||||
# - a .git directory marks the project-scope boundary — stop.
|
||||
# - filesystem root reached with neither found — boundary-reached.
|
||||
find_package_root() {
|
||||
|
|
||||
@@ -101,6 +104,11 @@ find_package_root() {
|
||||
echo "$current"
|
||||
return
|
||||
fi
|
||||
if [[ "$current" == "$HOME" ]]; then
|
||||
echo "user"
|
||||
echo "$current"
|
||||
return
|
||||
fi
|
||||
if [[ -d "$current/.git" ]]; then
|
||||
echo "project"
|
||||
echo "$current"
|
||||
@@ -127,17 +135,16 @@ case "$WALK_KIND" in
|
||||
SCOPE="plugin"
|
||||
PACKAGE_ROOT="$WALK_ROOT"
|
||||
;;
|
||||
user)
|
||||
SCOPE="user"
|
||||
;;
|
||||
project)
|
||||
SCOPE="project"
|
||||
;;
|
||||
boundary-reached)
|
||||
if [[ "$ROOT" == "$HOME" ]]; then
|
||||
SCOPE="user"
|
||||
else
|
||||
# Default fallback, same as the pre-walk-up script: no plugin/APM
|
||||
# marker and not exactly $HOME means project scope.
|
||||
SCOPE="project"
|
||||
fi
|
||||
# Default fallback, same as the pre-walk-up script: no plugin/APM
|
||||
# marker, no $HOME boundary, and no .git means project scope.
|
||||
SCOPE="project"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
@@ -211,6 +211,17 @@ teardown() {
|
||||
rm -rf "$FAKE_HOME"
|
||||
}
|
||||
|
||||
@test "user scope: \$HOME being a dotfiles .git repo does not shadow user scope" {
|
||||
FAKE_HOME="$(mktemp -d)"
|
||||
mkdir "$FAKE_HOME/.git"
|
||||
run env HOME="$FAKE_HOME" bash "$SCRIPT" my-agent "~"
|
||||
assert_success
|
||||
assert [ -f "$FAKE_HOME/.claude/agents/my-agent.md" ]
|
||||
assert [ -f "$FAKE_HOME/.copilot/agents/my-agent.agent.md" ]
|
||||
refute [ -d "$FAKE_HOME/.github" ]
|
||||
rm -rf "$FAKE_HOME"
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Name validation
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user
Scaffolds into the wrong directory for existing plugins.
find_package_root()dropped the directplugin.jsoncheck at$ROOT, so scaffolding a new agent inside an existing plugin.json-only plugin creates files in the wrong place.Reproduced:
new-agent.sh <name> plugins/kyberforge/createsplugins/kyberforge/.claude/agents/<name>.md+.github/agents/<name>.agent.mdinstead ofplugins/kyberforge/agents/<name>.md/.agent.md, diverging from where every other agent in that plugin actually lives.