@glexcorp/gskp 0.1.1 → 0.1.2
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.md +2 -2
- package/CLAUDE.md +3 -3
- package/README.md +76 -77
- package/{global → base}/claude/fork-idea-branch/SKILL.md +1 -1
- package/{global → base}/claude/init-agentic-skills/CHANGELOG.md +8 -0
- package/base/claude/init-agentic-skills/SKILL.md +41 -0
- package/base/claude/init-agentic-skills/archive/v0.9/SKILL.md +56 -0
- package/{global → base}/claude/pack/CHANGELOG.md +8 -0
- package/base/claude/pack/SKILL.md +170 -0
- package/base/claude/pack/archive/v0.9/SKILL.md +170 -0
- package/{global → base}/claude/provision-agentic-config/CHANGELOG.md +4 -0
- package/base/claude/provision-agentic-config/SKILL.md +320 -0
- package/base/claude/provision-agentic-config/archive/v0.9/SKILL.md +320 -0
- package/{global → base}/claude/skills/CHANGELOG.md +4 -0
- package/base/claude/skills/SKILL.md +141 -0
- package/{global → base}/codex/init-agentic-skills/CHANGELOG.md +12 -0
- package/base/codex/init-agentic-skills/SKILL.md +43 -0
- package/base/codex/init-agentic-skills/agents/openai.yaml +7 -0
- package/base/codex/init-agentic-skills/archive/v0.10/SKILL.md +58 -0
- package/base/codex/init-agentic-skills/archive/v0.9/SKILL.md +58 -0
- package/{global → base}/codex/pack/CHANGELOG.md +8 -0
- package/base/codex/pack/SKILL.md +172 -0
- package/base/codex/pack/archive/v0.9/SKILL.md +172 -0
- package/{global → base}/codex/provision-agentic-config/CHANGELOG.md +4 -0
- package/base/codex/provision-agentic-config/SKILL.md +307 -0
- package/base/codex/provision-agentic-config/archive/v0.9/SKILL.md +307 -0
- package/{global → base}/codex/skills/CHANGELOG.md +4 -0
- package/base/codex/skills/SKILL.md +140 -0
- package/dist/skillpacks-manifest.json +155 -130
- package/docs/QUICKSTART.md +26 -24
- package/docs/decks.md +17 -17
- package/docs/packs.md +46 -46
- package/docs/skillpacks-npm-distribution.md +120 -72
- package/package.json +3 -4
- package/packs/alignment-page-admin/claude/upgrade-alignment-pages/SKILL.md +1 -1
- package/packs/alignment-page-admin/codex/upgrade-alignment-pages/SKILL.md +1 -1
- package/packs/docs-health/claude/hygiene/SKILL.md +10 -10
- package/packs/docs-health/codex/hygiene/SKILL.md +10 -10
- package/packs/exec-loop/claude/exec/SKILL.md +1 -1
- package/packs/exec-loop/claude/ship/SKILL.md +1 -1
- package/packs/exec-loop/codex/exec/SKILL.md +4 -4
- package/packs/exec-loop/codex/ship/SKILL.md +1 -1
- package/packs/gitops/claude/sync/CHANGELOG.md +10 -0
- package/packs/gitops/claude/sync/SKILL.md +12 -12
- package/packs/gitops/claude/sync/archive/v0.4/SKILL.md +175 -0
- package/packs/gitops/claude/sync/archive/v0.5/SKILL.md +175 -0
- package/packs/gitops/codex/sync/CHANGELOG.md +10 -0
- package/packs/gitops/codex/sync/SKILL.md +12 -12
- package/packs/gitops/codex/sync/archive/v0.4/SKILL.md +149 -0
- package/packs/gitops/codex/sync/archive/v0.5/SKILL.md +149 -0
- package/packs/monorepo/PACK.md +2 -2
- package/packs/monorepo/claude/mono-detect/SKILL.md +3 -3
- package/packs/monorepo/claude/mono-exec/SKILL.md +1 -1
- package/packs/monorepo/claude/mono-guard/SKILL.md +2 -2
- package/packs/monorepo/claude/mono-ship/SKILL.md +1 -1
- package/packs/monorepo/claude/scaffold/SKILL.md +1 -1
- package/packs/monorepo/codex/mono-detect/SKILL.md +3 -3
- package/packs/monorepo/codex/mono-exec/SKILL.md +1 -1
- package/packs/monorepo/codex/mono-guard/SKILL.md +2 -2
- package/packs/monorepo/codex/mono-ship/SKILL.md +1 -1
- package/packs/monorepo/codex/scaffold/SKILL.md +1 -1
- package/packs/session-analytics/claude/prompt-history-backfill/SKILL.md +1 -1
- package/packs/session-analytics/claude/session-triage/SKILL.md +1 -1
- package/packs/session-analytics/codex/prompt-history-backfill/SKILL.md +1 -1
- package/packs/session-analytics/codex/session-triage/SKILL.md +1 -1
- package/packs/skill-dev/claude/create-agentic-skill/CHANGELOG.md +8 -0
- package/packs/skill-dev/claude/create-agentic-skill/SKILL.md +4 -4
- package/packs/skill-dev/claude/create-agentic-skill/archive/v0.1/SKILL.md +91 -0
- package/packs/skill-dev/claude/create-agentic-skill/archive/v0.2/SKILL.md +91 -0
- package/packs/skill-dev/claude/create-local-skill/CHANGELOG.md +4 -0
- package/packs/skill-dev/claude/create-local-skill/SKILL.md +6 -6
- package/packs/skill-dev/claude/create-local-skill/archive/v0.1/SKILL.md +91 -0
- package/packs/skill-dev/claude/skill-interview/SKILL.md +3 -3
- package/packs/skill-dev/claude/targeted-skill-builder/CHANGELOG.md +4 -0
- package/packs/skill-dev/claude/targeted-skill-builder/SKILL.md +5 -5
- package/packs/skill-dev/claude/targeted-skill-builder/archive/v0.3/SKILL.md +116 -0
- package/packs/skill-dev/codex/create-agentic-skill/CHANGELOG.md +8 -0
- package/packs/skill-dev/codex/create-agentic-skill/SKILL.md +4 -4
- package/packs/skill-dev/codex/create-agentic-skill/archive/v0.1/SKILL.md +93 -0
- package/packs/skill-dev/codex/create-agentic-skill/archive/v0.2/SKILL.md +93 -0
- package/packs/skill-dev/codex/create-local-skill/CHANGELOG.md +4 -0
- package/packs/skill-dev/codex/create-local-skill/SKILL.md +6 -6
- package/packs/skill-dev/codex/create-local-skill/archive/v0.1/SKILL.md +80 -0
- package/packs/skill-dev/codex/skill-interview/SKILL.md +3 -3
- package/packs/skill-dev/codex/targeted-skill-builder/CHANGELOG.md +4 -0
- package/packs/skill-dev/codex/targeted-skill-builder/SKILL.md +6 -6
- package/packs/skill-dev/codex/targeted-skill-builder/archive/v0.3/SKILL.md +118 -0
- package/scripts/pack.sh +8 -2
- package/scripts/skill-links.sh +2 -2
- package/scripts/upgrade-alignment-page.mjs +1 -1
- package/src/cli/lifecycle.mjs +39 -11
- package/src/cli/pack-normalization.mjs +1 -1
- package/src/cli/run-pack-script.mjs +6 -16
- package/src/cli/update-check.mjs +1 -1
- package/global/claude/init-agentic-skills/scripts/init-agentic-skills.sh +0 -227
- package/global/codex/init-agentic-skills/agents/openai.yaml +0 -7
- package/global/codex/init-agentic-skills/scripts/init-agentic-skills.sh +0 -227
- package/init.sh +0 -207
- /package/{global → base}/claude/afps-status/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/claude/afps-status/CHANGELOG.md +0 -0
- /package/{global → base}/claude/afps-status/SKILL.md +0 -0
- /package/{global → base}/claude/afps-status/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/afps-status/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/claude/afps-status/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/afps-status/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/claude/animation-design-planner/CHANGELOG.md +0 -0
- /package/{global → base}/claude/animation-design-planner/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/frameworks/css-transitions/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/frameworks/gsap/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/frameworks/motion-framer/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/frameworks/threejs/SKILL.md +0 -0
- /package/{global → base}/claude/animation-design-planner/frameworks/web-animations-api/SKILL.md +0 -0
- /package/{global → base}/claude/autoresearch/CHANGELOG.md +0 -0
- /package/{global → base}/claude/autoresearch/SKILL.md +0 -0
- /package/{global → base}/claude/autoresearch-prep/CHANGELOG.md +0 -0
- /package/{global → base}/claude/autoresearch-prep/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/CHANGELOG.md +0 -0
- /package/{global → base}/claude/codebase-status/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.7/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.8/SKILL.md +0 -0
- /package/{global → base}/claude/codebase-status/archive/v0.9/SKILL.md +0 -0
- /package/{global → base}/claude/fork-idea-branch/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/claude/fork-idea-branch/CHANGELOG.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/CHANGELOG.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.10/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.11/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.12/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.13/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.14/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.15/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.7/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.8/SKILL.md +0 -0
- /package/{global → base}/claude/idea-scope-brief/archive/v0.9/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/claude/init-agentic-skills/archive/v0.7/SKILL.md +0 -0
- /package/{global/claude/init-agentic-skills → base/claude/init-agentic-skills/archive/v0.8}/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/claude/pack/archive/v0.7/SKILL.md +0 -0
- /package/{global/claude/pack → base/claude/pack/archive/v0.8}/SKILL.md +0 -0
- /package/{global → base}/claude/pack/scripts/pack.sh +0 -0
- /package/{global → base}/claude/provision-agentic-config/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.1/SKILL.md +0 -0
- /package/{global/claude/provision-agentic-config → base/claude/provision-agentic-config/archive/v0.10}/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.7/SKILL.md +0 -0
- /package/{global → base}/claude/provision-agentic-config/archive/v0.8/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/claude/skills/archive/v0.6/SKILL.md +0 -0
- /package/{global/claude/skills → base/claude/skills/archive/v0.7}/SKILL.md +0 -0
- /package/{global → base}/codex/afps-status/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/codex/afps-status/CHANGELOG.md +0 -0
- /package/{global → base}/codex/afps-status/SKILL.md +0 -0
- /package/{global → base}/codex/afps-status/agents/openai.yaml +0 -0
- /package/{global → base}/codex/afps-status/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/afps-status/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/codex/afps-status/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/afps-status/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/codex/animation-design-planner/CHANGELOG.md +0 -0
- /package/{global → base}/codex/animation-design-planner/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/agents/openai.yaml +0 -0
- /package/{global → base}/codex/animation-design-planner/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/frameworks/css-transitions/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/frameworks/gsap/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/frameworks/motion-framer/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/frameworks/threejs/SKILL.md +0 -0
- /package/{global → base}/codex/animation-design-planner/frameworks/web-animations-api/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/CHANGELOG.md +0 -0
- /package/{global → base}/codex/codebase-status/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/agents/openai.yaml +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.7/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.8/SKILL.md +0 -0
- /package/{global → base}/codex/codebase-status/archive/v0.9/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/CHANGELOG.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/agents/openai.yaml +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.10/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.11/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.12/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.13/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.14/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.15/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.16/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.7/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.8/SKILL.md +0 -0
- /package/{global → base}/codex/idea-scope-brief/archive/v0.9/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/codex/init-agentic-skills/archive/v0.7/SKILL.md +0 -0
- /package/{global/codex/init-agentic-skills → base/codex/init-agentic-skills/archive/v0.8}/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/codex/pack/archive/v0.7/SKILL.md +0 -0
- /package/{global/codex/pack → base/codex/pack/archive/v0.8}/SKILL.md +0 -0
- /package/{global → base}/codex/pack/scripts/pack.sh +0 -0
- /package/{global → base}/codex/provision-agentic-config/ALIGNMENT-PAGE.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/agents/openai.yaml +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.1/SKILL.md +0 -0
- /package/{global/codex/provision-agentic-config → base/codex/provision-agentic-config/archive/v0.10}/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.6/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.7/SKILL.md +0 -0
- /package/{global → base}/codex/provision-agentic-config/archive/v0.8/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.0/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.1/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.2/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.3/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.4/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.5/SKILL.md +0 -0
- /package/{global → base}/codex/skills/archive/v0.6/SKILL.md +0 -0
- /package/{global/codex/skills → base/codex/skills/archive/v0.7}/SKILL.md +0 -0
package/src/cli/lifecycle.mjs
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
unlinkSync,
|
|
13
13
|
writeFileSync
|
|
14
14
|
} from 'node:fs';
|
|
15
|
+
import { homedir } from 'node:os';
|
|
15
16
|
import { basename, dirname, join, relative, resolve } from 'node:path';
|
|
16
17
|
import { fileURLToPath } from 'node:url';
|
|
17
18
|
import {
|
|
@@ -33,7 +34,7 @@ const HIBERNATED_REACTIVATION_TEXT =
|
|
|
33
34
|
'Reactivation requires a stable service/API, a known auth contract, and updated smoke tests.';
|
|
34
35
|
const TOOLS = ['claude', 'codex'];
|
|
35
36
|
const AGENT_DOCS = ['AGENTS.md', 'CLAUDE.md'];
|
|
36
|
-
const KNOWN_PROVISION_AGENTIC_CONFIG_VERSIONS = new Set(['v0.5', 'v0.6', 'v0.7', 'v0.8', 'v0.9', 'v0.10']);
|
|
37
|
+
const KNOWN_PROVISION_AGENTIC_CONFIG_VERSIONS = new Set(['v0.5', 'v0.6', 'v0.7', 'v0.8', 'v0.9', 'v0.10', 'v0.11']);
|
|
37
38
|
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
38
39
|
const packageRoot = resolve(moduleDir, '..', '..');
|
|
39
40
|
const checkoutRoot = resolve(packageRoot, '..', '..');
|
|
@@ -126,7 +127,7 @@ function packSkillEntries(manifest, packName, tool) {
|
|
|
126
127
|
|
|
127
128
|
function baseSkillEntries(manifest, tool) {
|
|
128
129
|
return manifestSkills(manifest).filter((skill) => {
|
|
129
|
-
return skill.scope === '
|
|
130
|
+
return skill.scope === 'base' && skill.platform === tool && skill.path;
|
|
130
131
|
});
|
|
131
132
|
}
|
|
132
133
|
|
|
@@ -144,7 +145,7 @@ function uniqueBaseSkillNames(manifest) {
|
|
|
144
145
|
return [
|
|
145
146
|
...new Set(
|
|
146
147
|
manifestSkills(manifest)
|
|
147
|
-
.filter((skill) => skill.scope === '
|
|
148
|
+
.filter((skill) => skill.scope === 'base' && skill.name)
|
|
148
149
|
.map((skill) => skill.name)
|
|
149
150
|
)
|
|
150
151
|
].sort((a, b) => a.localeCompare(b));
|
|
@@ -269,11 +270,11 @@ function managedMarkerField(target, field) {
|
|
|
269
270
|
|
|
270
271
|
function sourceOwnedBySkillpacks(source) {
|
|
271
272
|
const ownedPrefixes = [
|
|
272
|
-
join(packageRoot, '
|
|
273
|
-
join(packageRoot, '
|
|
273
|
+
join(packageRoot, 'base', 'claude'),
|
|
274
|
+
join(packageRoot, 'base', 'codex'),
|
|
274
275
|
join(packageRoot, 'packs'),
|
|
275
|
-
join(checkoutRoot, '
|
|
276
|
-
join(checkoutRoot, '
|
|
276
|
+
join(checkoutRoot, 'base', 'claude'),
|
|
277
|
+
join(checkoutRoot, 'base', 'codex'),
|
|
277
278
|
join(checkoutRoot, 'packs')
|
|
278
279
|
];
|
|
279
280
|
|
|
@@ -614,7 +615,7 @@ function staleProjectPackError(pack, location, reason = '') {
|
|
|
614
615
|
const detail = reason ? ` ${reason}` : '';
|
|
615
616
|
return new Error(
|
|
616
617
|
`Stale pack entry '${pack}' in .agents/project.json ${location}.${detail} ` +
|
|
617
|
-
`Run 'npx
|
|
618
|
+
`Run 'npx skillpacks remove ${pack}' or edit .agents/project.json to remove or rename it.`
|
|
618
619
|
);
|
|
619
620
|
}
|
|
620
621
|
|
|
@@ -887,6 +888,29 @@ export async function initProject({ manifest, projectRoot = process.cwd() }) {
|
|
|
887
888
|
});
|
|
888
889
|
}
|
|
889
890
|
|
|
891
|
+
export async function uninstallGlobal({ homeRoot = homedir() } = {}) {
|
|
892
|
+
let removed = 0;
|
|
893
|
+
|
|
894
|
+
for (const tool of TOOLS) {
|
|
895
|
+
const root = join(homeRoot, `.${tool}`, 'skills');
|
|
896
|
+
if (!existsSync(root)) {
|
|
897
|
+
continue;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
for (const entry of readdirSync(root).sort((a, b) => a.localeCompare(b))) {
|
|
901
|
+
const target = join(root, entry);
|
|
902
|
+
if (removeRepoSkillInstall(target)) {
|
|
903
|
+
console.log(`Removed ${relative(homeRoot, target)}`);
|
|
904
|
+
removed += 1;
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
console.log(`Done. Removed ${removed} repo-managed base skill install(s) from ${homeRoot}.`);
|
|
910
|
+
console.log('Base skills now install project-local via `npx skillpacks init`.');
|
|
911
|
+
return 0;
|
|
912
|
+
}
|
|
913
|
+
|
|
890
914
|
export async function installResolved({ manifest, projectRoot = process.cwd(), packs = [], skills = [] }) {
|
|
891
915
|
return withProjectLock(projectRoot, `install ${[...packs, ...skills].join(' ')}`.trim(), async () => {
|
|
892
916
|
for (const pack of packs) {
|
|
@@ -983,7 +1007,7 @@ function pruneOrphanedSkillRoots({ manifest, projectRoot, dryRun = false }) {
|
|
|
983
1007
|
}
|
|
984
1008
|
|
|
985
1009
|
function provisionerSkillText() {
|
|
986
|
-
const sourcePath = resolvePackagedPath('
|
|
1010
|
+
const sourcePath = resolvePackagedPath('base/codex/provision-agentic-config/SKILL.md');
|
|
987
1011
|
if (!existsSync(sourcePath)) {
|
|
988
1012
|
throw new Error(`Cannot find canonical provision-agentic-config skill at ${sourcePath}`);
|
|
989
1013
|
}
|
|
@@ -1202,6 +1226,10 @@ export async function doctorProject({ manifest, projectRoot = process.cwd(), arg
|
|
|
1202
1226
|
console.log(`Project skill update mode: ${mode}`);
|
|
1203
1227
|
console.log('Skill install drift (.claude/skills, .codex/skills):');
|
|
1204
1228
|
|
|
1229
|
+
const refreshCmd = existsSync(join(checkoutRoot, '.git'))
|
|
1230
|
+
? `${checkoutRoot}/scripts/pack.sh refresh`
|
|
1231
|
+
: 'npx skillpacks refresh';
|
|
1232
|
+
|
|
1205
1233
|
let found = false;
|
|
1206
1234
|
let anyStale = false;
|
|
1207
1235
|
for (const target of installedSkillTargets(projectRoot)) {
|
|
@@ -1220,7 +1248,7 @@ export async function doctorProject({ manifest, projectRoot = process.cwd(), arg
|
|
|
1220
1248
|
console.log(` pinned ${rel} (frozen ${status.recordedVersion || '?'})`);
|
|
1221
1249
|
break;
|
|
1222
1250
|
case 'unknown':
|
|
1223
|
-
console.log(` unknown ${rel} — run
|
|
1251
|
+
console.log(` unknown ${rel} — run \`${refreshCmd}\` to enable drift tracking`);
|
|
1224
1252
|
break;
|
|
1225
1253
|
case 'missing-source':
|
|
1226
1254
|
console.log(` missing ${rel} — canonical source no longer exists`);
|
|
@@ -1242,7 +1270,7 @@ export async function doctorProject({ manifest, projectRoot = process.cwd(), arg
|
|
|
1242
1270
|
|
|
1243
1271
|
if (anyStale) {
|
|
1244
1272
|
console.log('');
|
|
1245
|
-
console.log(
|
|
1273
|
+
console.log(`Fix: ${refreshCmd}`);
|
|
1246
1274
|
return 1;
|
|
1247
1275
|
}
|
|
1248
1276
|
|
|
@@ -440,7 +440,7 @@ function allPacksExist(packs, activePacks) {
|
|
|
440
440
|
}
|
|
441
441
|
|
|
442
442
|
function unknownNameError(token, manifest) {
|
|
443
|
-
return new Error(`Unknown pack or skill '${token}'. Available packs: ${availablePacksInline(manifest)}\nRun 'npx
|
|
443
|
+
return new Error(`Unknown pack or skill '${token}'. Available packs: ${availablePacksInline(manifest)}\nRun 'npx skillpacks list' to see all available skills.`);
|
|
444
444
|
}
|
|
445
445
|
|
|
446
446
|
function hibernatedPackError(requested, pack) {
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
pruneProject,
|
|
18
18
|
refreshProject,
|
|
19
19
|
removeResolved,
|
|
20
|
+
uninstallGlobal,
|
|
20
21
|
unpinSkill
|
|
21
22
|
} from './lifecycle.mjs';
|
|
22
23
|
|
|
@@ -25,7 +26,6 @@ const packageRoot = resolve(moduleDir, '..', '..');
|
|
|
25
26
|
const checkoutRoot = resolve(packageRoot, '..', '..');
|
|
26
27
|
const packageJsonPath = join(packageRoot, 'package.json');
|
|
27
28
|
const packScriptPath = resolvePackagedPath('scripts/pack.sh');
|
|
28
|
-
const initScriptPath = resolvePackagedPath('init.sh');
|
|
29
29
|
const manifestPath = resolvePackagedPath('dist/skillpacks-manifest.json');
|
|
30
30
|
const alignmentUpgradeScriptPath = resolvePackagedPath('scripts/upgrade-alignment-page.mjs');
|
|
31
31
|
const alignmentAuditScriptPath = resolvePackagedPath('scripts/audit-alignment-pages.mjs');
|
|
@@ -116,11 +116,6 @@ function runCommand(command, args, options = {}) {
|
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
function runGlobalInit(args) {
|
|
120
|
-
requireCommand('bash', 'Install bash before running gskp.');
|
|
121
|
-
return runCommand('bash', [initScriptPath, ...args]);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
119
|
function assertNoArgs(command, args) {
|
|
125
120
|
if (args.length > 0) {
|
|
126
121
|
throw new Error(`${command} does not accept arguments`);
|
|
@@ -364,7 +359,7 @@ Commands:
|
|
|
364
359
|
install <name...> Enable packs or individual skills
|
|
365
360
|
install-deck <deck> [--full] Enable packs selected by deck metadata
|
|
366
361
|
init Install base skills into this project
|
|
367
|
-
|
|
362
|
+
uninstall-global Remove legacy repo-managed base skills from ~/.claude and ~/.codex
|
|
368
363
|
remove <name...> Remove packs or individual skills
|
|
369
364
|
refresh Recreate local skill roots from project config
|
|
370
365
|
doctor Report skill-install drift
|
|
@@ -383,7 +378,6 @@ Commands:
|
|
|
383
378
|
unpin <skill> Revert a pinned skill to latest
|
|
384
379
|
set-mode <mode> Set project agent mode
|
|
385
380
|
which <skill> Show which pack provides a skill
|
|
386
|
-
init-global [args...] Alias for init --global
|
|
387
381
|
|
|
388
382
|
Project-local commands write to the current working directory.`);
|
|
389
383
|
}
|
|
@@ -433,8 +427,9 @@ export async function runSkillpacksCli(args) {
|
|
|
433
427
|
return setUpdateMode(rest[0]);
|
|
434
428
|
}
|
|
435
429
|
|
|
436
|
-
if (command === '
|
|
437
|
-
|
|
430
|
+
if (command === 'uninstall-global') {
|
|
431
|
+
assertNoArgs('uninstall-global', rest);
|
|
432
|
+
return uninstallGlobal();
|
|
438
433
|
}
|
|
439
434
|
|
|
440
435
|
if (command === 'install-deck') {
|
|
@@ -452,13 +447,8 @@ export async function runSkillpacksCli(args) {
|
|
|
452
447
|
}
|
|
453
448
|
|
|
454
449
|
if (command === 'init') {
|
|
455
|
-
if (rest[0] === '--global') {
|
|
456
|
-
return runGlobalInit(rest.slice(1));
|
|
457
|
-
}
|
|
458
450
|
if (rest.length > 0) {
|
|
459
|
-
throw new Error(
|
|
460
|
-
"init does not accept arguments except '--global'. Use 'gskp init --global' for user-home global core skills."
|
|
461
|
-
);
|
|
451
|
+
throw new Error('init does not accept arguments');
|
|
462
452
|
}
|
|
463
453
|
return initProject({
|
|
464
454
|
manifest: readManifest(),
|
package/src/cli/update-check.mjs
CHANGED
|
@@ -62,7 +62,7 @@ export async function printUpdateNotice(checkPromise, currentVersion) {
|
|
|
62
62
|
if (compareVersions(currentVersion, latest) >= 0) return;
|
|
63
63
|
|
|
64
64
|
const msg = ` Update available: ${currentVersion} → ${latest}`;
|
|
65
|
-
const run = ' Run: npx @
|
|
65
|
+
const run = ' Run: npx skillpacks@latest';
|
|
66
66
|
const width = Math.max(msg.length, run.length) + 2;
|
|
67
67
|
const pad = (s) => s + ' '.repeat(width - s.length);
|
|
68
68
|
const border = '─'.repeat(width);
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
|
5
|
-
DELEGATE_SCRIPT="init.sh"
|
|
6
|
-
|
|
7
|
-
resolve_repo_root() {
|
|
8
|
-
local source_tree_root
|
|
9
|
-
if source_tree_root="$(cd "$SKILL_DIR/../../.." 2>/dev/null && pwd -P)"; then
|
|
10
|
-
if [ -f "$source_tree_root/$DELEGATE_SCRIPT" ]; then
|
|
11
|
-
printf '%s\n' "$source_tree_root"
|
|
12
|
-
return 0
|
|
13
|
-
fi
|
|
14
|
-
else
|
|
15
|
-
source_tree_root="<unresolved>"
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
local managed_file="$SKILL_DIR/.agentic-skills-managed"
|
|
19
|
-
local managed_source=""
|
|
20
|
-
if [ -f "$managed_file" ]; then
|
|
21
|
-
while IFS= read -r line; do
|
|
22
|
-
case "$line" in
|
|
23
|
-
source=*)
|
|
24
|
-
managed_source="${line#source=}"
|
|
25
|
-
break
|
|
26
|
-
;;
|
|
27
|
-
esac
|
|
28
|
-
done < "$managed_file"
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
local provenance_root="<unresolved>"
|
|
32
|
-
if [ -n "$managed_source" ] && [ -d "$managed_source" ]; then
|
|
33
|
-
if provenance_root="$(cd "$managed_source/../../.." 2>/dev/null && pwd -P)"; then
|
|
34
|
-
if [ -f "$provenance_root/$DELEGATE_SCRIPT" ]; then
|
|
35
|
-
printf '%s\n' "$provenance_root"
|
|
36
|
-
return 0
|
|
37
|
-
fi
|
|
38
|
-
else
|
|
39
|
-
provenance_root="<unresolved>"
|
|
40
|
-
fi
|
|
41
|
-
fi
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
echo "ERROR: Unable to resolve agentic-skills repository root for init-agentic-skills launcher."
|
|
45
|
-
echo "Tried source-tree candidate: $source_tree_root"
|
|
46
|
-
echo "Tried managed-install provenance: $managed_file source=${managed_source:-<missing>} -> $provenance_root"
|
|
47
|
-
echo "Expected delegated script: $DELEGATE_SCRIPT"
|
|
48
|
-
} >&2
|
|
49
|
-
return 1
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
REPO_ROOT="$(resolve_repo_root)"
|
|
53
|
-
|
|
54
|
-
PREFERENCES_FILE="$HOME/.agentic-skills/preferences.json"
|
|
55
|
-
SETTINGS_FILE="$HOME/.claude/settings.json"
|
|
56
|
-
DRIFT_HOOK_CMD="bash $REPO_ROOT/scripts/skill-drift-hook.sh"
|
|
57
|
-
|
|
58
|
-
status() {
|
|
59
|
-
echo "agentic-skills checkout: $REPO_ROOT"
|
|
60
|
-
git -C "$REPO_ROOT" rev-parse --short HEAD 2>/dev/null | sed 's/^/local commit: /' || true
|
|
61
|
-
git -C "$REPO_ROOT" remote get-url origin 2>/dev/null | sed 's/^/remote URL: /' || echo "remote URL: unavailable"
|
|
62
|
-
|
|
63
|
-
if [ -f "$PREFERENCES_FILE" ]; then
|
|
64
|
-
python3 -c 'import json, pathlib, sys
|
|
65
|
-
path = pathlib.Path(sys.argv[1])
|
|
66
|
-
try:
|
|
67
|
-
value = json.loads(path.read_text()).get("sync", {}).get("github_freshness_check")
|
|
68
|
-
except Exception:
|
|
69
|
-
value = None
|
|
70
|
-
print("github freshness preference: " + (value if value in {"ask", "always", "never"} else "unset"))' "$PREFERENCES_FILE"
|
|
71
|
-
else
|
|
72
|
-
echo "github freshness preference: unset"
|
|
73
|
-
fi
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
doctor() {
|
|
77
|
-
# shellcheck source=/dev/null
|
|
78
|
-
source "$REPO_ROOT/scripts/skill-links.sh" || { echo "ERROR: unable to load skill-links.sh" >&2; return 1; }
|
|
79
|
-
echo "Global skill install drift (~/.claude/skills, ~/.codex/skills):"
|
|
80
|
-
local found=false any_stale=false target line status rec cur
|
|
81
|
-
while IFS= read -r target; do
|
|
82
|
-
[ -n "$target" ] || continue
|
|
83
|
-
line="$(skill_install_status "$target")"
|
|
84
|
-
IFS=$'\t' read -r status rec cur <<< "$line"
|
|
85
|
-
[ "$status" = "not-managed" ] && continue
|
|
86
|
-
found=true
|
|
87
|
-
case "$status" in
|
|
88
|
-
ok) printf ' ok %s\n' "$target" ;;
|
|
89
|
-
pinned) printf ' pinned %s (frozen %s)\n' "$target" "${rec:-?}" ;;
|
|
90
|
-
unknown) printf ' unknown %s — rerun init to enable drift tracking\n' "$target" ;;
|
|
91
|
-
missing-source) printf ' missing %s — canonical source no longer exists\n' "$target" ;;
|
|
92
|
-
stale) printf ' STALE %s (%s -> %s)\n' "$target" "${rec:-?}" "${cur:-?}"; any_stale=true ;;
|
|
93
|
-
esac
|
|
94
|
-
done < <(find "$HOME/.claude/skills" "$HOME/.codex/skills" -mindepth 1 -maxdepth 1 \( -type l -o -type d \) -print 2>/dev/null | sort)
|
|
95
|
-
$found || echo " (no managed global skill installs found)"
|
|
96
|
-
if $any_stale; then
|
|
97
|
-
echo ""
|
|
98
|
-
echo "Fix: /init-agentic-skills update (re-copies global skills from this checkout)"
|
|
99
|
-
return 1
|
|
100
|
-
fi
|
|
101
|
-
return 0
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
set_pref() {
|
|
105
|
-
local key="$1" val="$2" jqval
|
|
106
|
-
case "$key" in
|
|
107
|
-
session_start_hook|auto_refresh) ;;
|
|
108
|
-
*) echo "ERROR: unknown preference '$key' (use session_start_hook or auto_refresh)" >&2; return 1 ;;
|
|
109
|
-
esac
|
|
110
|
-
case "$val" in
|
|
111
|
-
true) jqval=true ;;
|
|
112
|
-
false) jqval=false ;;
|
|
113
|
-
*) echo "ERROR: value must be true or false" >&2; return 1 ;;
|
|
114
|
-
esac
|
|
115
|
-
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required to set preferences" >&2; return 1; }
|
|
116
|
-
mkdir -p "$(dirname "$PREFERENCES_FILE")"
|
|
117
|
-
[ -f "$PREFERENCES_FILE" ] || echo '{}' > "$PREFERENCES_FILE"
|
|
118
|
-
local tmp
|
|
119
|
-
tmp="$(jq --arg k "$key" --argjson v "$jqval" '.skills = ((.skills // {}) + {($k): $v})' "$PREFERENCES_FILE")" || { echo "ERROR: jq failed updating $PREFERENCES_FILE" >&2; return 1; }
|
|
120
|
-
[ -n "$tmp" ] || { echo "ERROR: jq produced empty output for $PREFERENCES_FILE" >&2; return 1; }
|
|
121
|
-
echo "$tmp" > "$PREFERENCES_FILE"
|
|
122
|
-
echo "Set skills.$key = $val in $PREFERENCES_FILE"
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
hook_enable() {
|
|
126
|
-
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required to register the hook" >&2; return 1; }
|
|
127
|
-
mkdir -p "$(dirname "$SETTINGS_FILE")"
|
|
128
|
-
[ -f "$SETTINGS_FILE" ] || echo '{}' > "$SETTINGS_FILE"
|
|
129
|
-
local tmp
|
|
130
|
-
tmp="$(jq --arg cmd "$DRIFT_HOOK_CMD" '
|
|
131
|
-
.hooks = (.hooks // {})
|
|
132
|
-
| .hooks.SessionStart = (.hooks.SessionStart // [])
|
|
133
|
-
| if ([.hooks.SessionStart[]?.hooks[]? | select(.command == $cmd)] | length) > 0
|
|
134
|
-
then .
|
|
135
|
-
else .hooks.SessionStart += [ { "hooks": [ { "type": "command", "command": $cmd } ] } ]
|
|
136
|
-
end
|
|
137
|
-
' "$SETTINGS_FILE")" || { echo "ERROR: jq failed updating $SETTINGS_FILE" >&2; return 1; }
|
|
138
|
-
[ -n "$tmp" ] || { echo "ERROR: jq produced empty output for $SETTINGS_FILE" >&2; return 1; }
|
|
139
|
-
echo "$tmp" > "$SETTINGS_FILE"
|
|
140
|
-
set_pref session_start_hook true
|
|
141
|
-
echo "Registered SessionStart drift hook in $SETTINGS_FILE"
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
hook_disable() {
|
|
145
|
-
set_pref session_start_hook false
|
|
146
|
-
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required to remove the hook" >&2; return 1; }
|
|
147
|
-
[ -f "$SETTINGS_FILE" ] || { echo "No $SETTINGS_FILE; nothing to remove."; return 0; }
|
|
148
|
-
local tmp
|
|
149
|
-
tmp="$(jq --arg cmd "$DRIFT_HOOK_CMD" '
|
|
150
|
-
if .hooks.SessionStart then
|
|
151
|
-
.hooks.SessionStart = ([ .hooks.SessionStart[]
|
|
152
|
-
| .hooks = ([ .hooks[]? | select(.command != $cmd) ])
|
|
153
|
-
| select((.hooks | length) > 0) ])
|
|
154
|
-
| if (.hooks.SessionStart | length) == 0 then del(.hooks.SessionStart) else . end
|
|
155
|
-
| if (.hooks | length) == 0 then del(.hooks) else . end
|
|
156
|
-
else . end
|
|
157
|
-
' "$SETTINGS_FILE")" || { echo "ERROR: jq failed updating $SETTINGS_FILE" >&2; return 1; }
|
|
158
|
-
[ -n "$tmp" ] || { echo "ERROR: jq produced empty output for $SETTINGS_FILE" >&2; return 1; }
|
|
159
|
-
echo "$tmp" > "$SETTINGS_FILE"
|
|
160
|
-
echo "Removed SessionStart drift hook from $SETTINGS_FILE"
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
show_prefs() {
|
|
164
|
-
if [ -f "$PREFERENCES_FILE" ] && command -v jq >/dev/null 2>&1; then
|
|
165
|
-
echo "session_start_hook: $(jq -r '.skills.session_start_hook // false' "$PREFERENCES_FILE")"
|
|
166
|
-
echo "auto_refresh: $(jq -r '.skills.auto_refresh // false' "$PREFERENCES_FILE")"
|
|
167
|
-
else
|
|
168
|
-
echo "session_start_hook: false"
|
|
169
|
-
echo "auto_refresh: false"
|
|
170
|
-
fi
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
confirm_update() {
|
|
174
|
-
if [ "${1:-}" = "--yes" ] || [ "${1:-}" = "-y" ]; then
|
|
175
|
-
return 0
|
|
176
|
-
fi
|
|
177
|
-
printf "Check GitHub, fast-forward this checkout if possible, and rerun init.sh? [y/N] "
|
|
178
|
-
read -r reply
|
|
179
|
-
case "$reply" in
|
|
180
|
-
y|Y|yes|YES) return 0 ;;
|
|
181
|
-
*) echo "Update cancelled."; return 1 ;;
|
|
182
|
-
esac
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
update_latest() {
|
|
186
|
-
confirm_update "${1:-}"
|
|
187
|
-
git -C "$REPO_ROOT" fetch origin
|
|
188
|
-
git -C "$REPO_ROOT" rev-parse --short HEAD | sed 's/^/local before: /'
|
|
189
|
-
git -C "$REPO_ROOT" rev-parse --short origin/HEAD | sed 's/^/origin HEAD: /'
|
|
190
|
-
git -C "$REPO_ROOT" merge --ff-only origin/HEAD
|
|
191
|
-
bash "$REPO_ROOT/$DELEGATE_SCRIPT"
|
|
192
|
-
echo "Refresh complete."
|
|
193
|
-
echo "Claude Code: run /reload-skills first; /clear starts a new empty-context conversation and can pick up the refreshed registry. Restart Claude Code if the top-level .claude/skills directory did not exist at session start or the skill is still invisible."
|
|
194
|
-
echo 'Codex: start a fresh Codex CLI session if the $ skill list remains stale.'
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
case "${1:-}" in
|
|
198
|
-
status)
|
|
199
|
-
status
|
|
200
|
-
;;
|
|
201
|
-
doctor)
|
|
202
|
-
doctor
|
|
203
|
-
;;
|
|
204
|
-
update|latest)
|
|
205
|
-
mode="$1"
|
|
206
|
-
shift
|
|
207
|
-
update_latest "${1:-}"
|
|
208
|
-
;;
|
|
209
|
-
set-pref)
|
|
210
|
-
shift
|
|
211
|
-
set_pref "${1:-}" "${2:-}"
|
|
212
|
-
;;
|
|
213
|
-
show-prefs)
|
|
214
|
-
show_prefs
|
|
215
|
-
;;
|
|
216
|
-
hook)
|
|
217
|
-
shift
|
|
218
|
-
case "${1:-}" in
|
|
219
|
-
enable) hook_enable ;;
|
|
220
|
-
disable) hook_disable ;;
|
|
221
|
-
*) echo "Usage: init-agentic-skills.sh hook <enable|disable>" >&2; exit 2 ;;
|
|
222
|
-
esac
|
|
223
|
-
;;
|
|
224
|
-
*)
|
|
225
|
-
exec bash "$REPO_ROOT/$DELEGATE_SCRIPT" "$@"
|
|
226
|
-
;;
|
|
227
|
-
esac
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Init Agentic Skills"
|
|
3
|
-
short_description: "Initialize global Claude and Codex skills from this checkout"
|
|
4
|
-
default_prompt: "Use $init-agentic-skills to run the agentic-skills initializer, refresh global managed skill installs, and explain how to enable project-local packs."
|
|
5
|
-
|
|
6
|
-
policy:
|
|
7
|
-
allow_implicit_invocation: true
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
|
5
|
-
DELEGATE_SCRIPT="init.sh"
|
|
6
|
-
|
|
7
|
-
resolve_repo_root() {
|
|
8
|
-
local source_tree_root
|
|
9
|
-
if source_tree_root="$(cd "$SKILL_DIR/../../.." 2>/dev/null && pwd -P)"; then
|
|
10
|
-
if [ -f "$source_tree_root/$DELEGATE_SCRIPT" ]; then
|
|
11
|
-
printf '%s\n' "$source_tree_root"
|
|
12
|
-
return 0
|
|
13
|
-
fi
|
|
14
|
-
else
|
|
15
|
-
source_tree_root="<unresolved>"
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
local managed_file="$SKILL_DIR/.agentic-skills-managed"
|
|
19
|
-
local managed_source=""
|
|
20
|
-
if [ -f "$managed_file" ]; then
|
|
21
|
-
while IFS= read -r line; do
|
|
22
|
-
case "$line" in
|
|
23
|
-
source=*)
|
|
24
|
-
managed_source="${line#source=}"
|
|
25
|
-
break
|
|
26
|
-
;;
|
|
27
|
-
esac
|
|
28
|
-
done < "$managed_file"
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
local provenance_root="<unresolved>"
|
|
32
|
-
if [ -n "$managed_source" ] && [ -d "$managed_source" ]; then
|
|
33
|
-
if provenance_root="$(cd "$managed_source/../../.." 2>/dev/null && pwd -P)"; then
|
|
34
|
-
if [ -f "$provenance_root/$DELEGATE_SCRIPT" ]; then
|
|
35
|
-
printf '%s\n' "$provenance_root"
|
|
36
|
-
return 0
|
|
37
|
-
fi
|
|
38
|
-
else
|
|
39
|
-
provenance_root="<unresolved>"
|
|
40
|
-
fi
|
|
41
|
-
fi
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
echo "ERROR: Unable to resolve agentic-skills repository root for init-agentic-skills launcher."
|
|
45
|
-
echo "Tried source-tree candidate: $source_tree_root"
|
|
46
|
-
echo "Tried managed-install provenance: $managed_file source=${managed_source:-<missing>} -> $provenance_root"
|
|
47
|
-
echo "Expected delegated script: $DELEGATE_SCRIPT"
|
|
48
|
-
} >&2
|
|
49
|
-
return 1
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
REPO_ROOT="$(resolve_repo_root)"
|
|
53
|
-
|
|
54
|
-
PREFERENCES_FILE="$HOME/.agentic-skills/preferences.json"
|
|
55
|
-
SETTINGS_FILE="$HOME/.claude/settings.json"
|
|
56
|
-
DRIFT_HOOK_CMD="bash $REPO_ROOT/scripts/skill-drift-hook.sh"
|
|
57
|
-
|
|
58
|
-
status() {
|
|
59
|
-
echo "agentic-skills checkout: $REPO_ROOT"
|
|
60
|
-
git -C "$REPO_ROOT" rev-parse --short HEAD 2>/dev/null | sed 's/^/local commit: /' || true
|
|
61
|
-
git -C "$REPO_ROOT" remote get-url origin 2>/dev/null | sed 's/^/remote URL: /' || echo "remote URL: unavailable"
|
|
62
|
-
|
|
63
|
-
if [ -f "$PREFERENCES_FILE" ]; then
|
|
64
|
-
python3 -c 'import json, pathlib, sys
|
|
65
|
-
path = pathlib.Path(sys.argv[1])
|
|
66
|
-
try:
|
|
67
|
-
value = json.loads(path.read_text()).get("sync", {}).get("github_freshness_check")
|
|
68
|
-
except Exception:
|
|
69
|
-
value = None
|
|
70
|
-
print("github freshness preference: " + (value if value in {"ask", "always", "never"} else "unset"))' "$PREFERENCES_FILE"
|
|
71
|
-
else
|
|
72
|
-
echo "github freshness preference: unset"
|
|
73
|
-
fi
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
doctor() {
|
|
77
|
-
# shellcheck source=/dev/null
|
|
78
|
-
source "$REPO_ROOT/scripts/skill-links.sh" || { echo "ERROR: unable to load skill-links.sh" >&2; return 1; }
|
|
79
|
-
echo "Global skill install drift (~/.claude/skills, ~/.codex/skills):"
|
|
80
|
-
local found=false any_stale=false target line status rec cur
|
|
81
|
-
while IFS= read -r target; do
|
|
82
|
-
[ -n "$target" ] || continue
|
|
83
|
-
line="$(skill_install_status "$target")"
|
|
84
|
-
IFS=$'\t' read -r status rec cur <<< "$line"
|
|
85
|
-
[ "$status" = "not-managed" ] && continue
|
|
86
|
-
found=true
|
|
87
|
-
case "$status" in
|
|
88
|
-
ok) printf ' ok %s\n' "$target" ;;
|
|
89
|
-
pinned) printf ' pinned %s (frozen %s)\n' "$target" "${rec:-?}" ;;
|
|
90
|
-
unknown) printf ' unknown %s — rerun init to enable drift tracking\n' "$target" ;;
|
|
91
|
-
missing-source) printf ' missing %s — canonical source no longer exists\n' "$target" ;;
|
|
92
|
-
stale) printf ' STALE %s (%s -> %s)\n' "$target" "${rec:-?}" "${cur:-?}"; any_stale=true ;;
|
|
93
|
-
esac
|
|
94
|
-
done < <(find "$HOME/.claude/skills" "$HOME/.codex/skills" -mindepth 1 -maxdepth 1 \( -type l -o -type d \) -print 2>/dev/null | sort)
|
|
95
|
-
$found || echo " (no managed global skill installs found)"
|
|
96
|
-
if $any_stale; then
|
|
97
|
-
echo ""
|
|
98
|
-
echo "Fix: /init-agentic-skills update (re-copies global skills from this checkout)"
|
|
99
|
-
return 1
|
|
100
|
-
fi
|
|
101
|
-
return 0
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
set_pref() {
|
|
105
|
-
local key="$1" val="$2" jqval
|
|
106
|
-
case "$key" in
|
|
107
|
-
session_start_hook|auto_refresh) ;;
|
|
108
|
-
*) echo "ERROR: unknown preference '$key' (use session_start_hook or auto_refresh)" >&2; return 1 ;;
|
|
109
|
-
esac
|
|
110
|
-
case "$val" in
|
|
111
|
-
true) jqval=true ;;
|
|
112
|
-
false) jqval=false ;;
|
|
113
|
-
*) echo "ERROR: value must be true or false" >&2; return 1 ;;
|
|
114
|
-
esac
|
|
115
|
-
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required to set preferences" >&2; return 1; }
|
|
116
|
-
mkdir -p "$(dirname "$PREFERENCES_FILE")"
|
|
117
|
-
[ -f "$PREFERENCES_FILE" ] || echo '{}' > "$PREFERENCES_FILE"
|
|
118
|
-
local tmp
|
|
119
|
-
tmp="$(jq --arg k "$key" --argjson v "$jqval" '.skills = ((.skills // {}) + {($k): $v})' "$PREFERENCES_FILE")" || { echo "ERROR: jq failed updating $PREFERENCES_FILE" >&2; return 1; }
|
|
120
|
-
[ -n "$tmp" ] || { echo "ERROR: jq produced empty output for $PREFERENCES_FILE" >&2; return 1; }
|
|
121
|
-
echo "$tmp" > "$PREFERENCES_FILE"
|
|
122
|
-
echo "Set skills.$key = $val in $PREFERENCES_FILE"
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
hook_enable() {
|
|
126
|
-
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required to register the hook" >&2; return 1; }
|
|
127
|
-
mkdir -p "$(dirname "$SETTINGS_FILE")"
|
|
128
|
-
[ -f "$SETTINGS_FILE" ] || echo '{}' > "$SETTINGS_FILE"
|
|
129
|
-
local tmp
|
|
130
|
-
tmp="$(jq --arg cmd "$DRIFT_HOOK_CMD" '
|
|
131
|
-
.hooks = (.hooks // {})
|
|
132
|
-
| .hooks.SessionStart = (.hooks.SessionStart // [])
|
|
133
|
-
| if ([.hooks.SessionStart[]?.hooks[]? | select(.command == $cmd)] | length) > 0
|
|
134
|
-
then .
|
|
135
|
-
else .hooks.SessionStart += [ { "hooks": [ { "type": "command", "command": $cmd } ] } ]
|
|
136
|
-
end
|
|
137
|
-
' "$SETTINGS_FILE")" || { echo "ERROR: jq failed updating $SETTINGS_FILE" >&2; return 1; }
|
|
138
|
-
[ -n "$tmp" ] || { echo "ERROR: jq produced empty output for $SETTINGS_FILE" >&2; return 1; }
|
|
139
|
-
echo "$tmp" > "$SETTINGS_FILE"
|
|
140
|
-
set_pref session_start_hook true
|
|
141
|
-
echo "Registered SessionStart drift hook in $SETTINGS_FILE"
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
hook_disable() {
|
|
145
|
-
set_pref session_start_hook false
|
|
146
|
-
command -v jq >/dev/null 2>&1 || { echo "ERROR: jq is required to remove the hook" >&2; return 1; }
|
|
147
|
-
[ -f "$SETTINGS_FILE" ] || { echo "No $SETTINGS_FILE; nothing to remove."; return 0; }
|
|
148
|
-
local tmp
|
|
149
|
-
tmp="$(jq --arg cmd "$DRIFT_HOOK_CMD" '
|
|
150
|
-
if .hooks.SessionStart then
|
|
151
|
-
.hooks.SessionStart = ([ .hooks.SessionStart[]
|
|
152
|
-
| .hooks = ([ .hooks[]? | select(.command != $cmd) ])
|
|
153
|
-
| select((.hooks | length) > 0) ])
|
|
154
|
-
| if (.hooks.SessionStart | length) == 0 then del(.hooks.SessionStart) else . end
|
|
155
|
-
| if (.hooks | length) == 0 then del(.hooks) else . end
|
|
156
|
-
else . end
|
|
157
|
-
' "$SETTINGS_FILE")" || { echo "ERROR: jq failed updating $SETTINGS_FILE" >&2; return 1; }
|
|
158
|
-
[ -n "$tmp" ] || { echo "ERROR: jq produced empty output for $SETTINGS_FILE" >&2; return 1; }
|
|
159
|
-
echo "$tmp" > "$SETTINGS_FILE"
|
|
160
|
-
echo "Removed SessionStart drift hook from $SETTINGS_FILE"
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
show_prefs() {
|
|
164
|
-
if [ -f "$PREFERENCES_FILE" ] && command -v jq >/dev/null 2>&1; then
|
|
165
|
-
echo "session_start_hook: $(jq -r '.skills.session_start_hook // false' "$PREFERENCES_FILE")"
|
|
166
|
-
echo "auto_refresh: $(jq -r '.skills.auto_refresh // false' "$PREFERENCES_FILE")"
|
|
167
|
-
else
|
|
168
|
-
echo "session_start_hook: false"
|
|
169
|
-
echo "auto_refresh: false"
|
|
170
|
-
fi
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
confirm_update() {
|
|
174
|
-
if [ "${1:-}" = "--yes" ] || [ "${1:-}" = "-y" ]; then
|
|
175
|
-
return 0
|
|
176
|
-
fi
|
|
177
|
-
printf "Check GitHub, fast-forward this checkout if possible, and rerun init.sh? [y/N] "
|
|
178
|
-
read -r reply
|
|
179
|
-
case "$reply" in
|
|
180
|
-
y|Y|yes|YES) return 0 ;;
|
|
181
|
-
*) echo "Update cancelled."; return 1 ;;
|
|
182
|
-
esac
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
update_latest() {
|
|
186
|
-
confirm_update "${1:-}"
|
|
187
|
-
git -C "$REPO_ROOT" fetch origin
|
|
188
|
-
git -C "$REPO_ROOT" rev-parse --short HEAD | sed 's/^/local before: /'
|
|
189
|
-
git -C "$REPO_ROOT" rev-parse --short origin/HEAD | sed 's/^/origin HEAD: /'
|
|
190
|
-
git -C "$REPO_ROOT" merge --ff-only origin/HEAD
|
|
191
|
-
bash "$REPO_ROOT/$DELEGATE_SCRIPT"
|
|
192
|
-
echo "Refresh complete."
|
|
193
|
-
echo "Claude Code: run /reload-skills first; /clear starts a new empty-context conversation and can pick up the refreshed registry. Restart Claude Code if the top-level .claude/skills directory did not exist at session start or the skill is still invisible."
|
|
194
|
-
echo 'Codex: start a fresh Codex CLI session if the $ skill list remains stale.'
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
case "${1:-}" in
|
|
198
|
-
status)
|
|
199
|
-
status
|
|
200
|
-
;;
|
|
201
|
-
doctor)
|
|
202
|
-
doctor
|
|
203
|
-
;;
|
|
204
|
-
update|latest)
|
|
205
|
-
mode="$1"
|
|
206
|
-
shift
|
|
207
|
-
update_latest "${1:-}"
|
|
208
|
-
;;
|
|
209
|
-
set-pref)
|
|
210
|
-
shift
|
|
211
|
-
set_pref "${1:-}" "${2:-}"
|
|
212
|
-
;;
|
|
213
|
-
show-prefs)
|
|
214
|
-
show_prefs
|
|
215
|
-
;;
|
|
216
|
-
hook)
|
|
217
|
-
shift
|
|
218
|
-
case "${1:-}" in
|
|
219
|
-
enable) hook_enable ;;
|
|
220
|
-
disable) hook_disable ;;
|
|
221
|
-
*) echo "Usage: init-agentic-skills.sh hook <enable|disable>" >&2; exit 2 ;;
|
|
222
|
-
esac
|
|
223
|
-
;;
|
|
224
|
-
*)
|
|
225
|
-
exec bash "$REPO_ROOT/$DELEGATE_SCRIPT" "$@"
|
|
226
|
-
;;
|
|
227
|
-
esac
|