-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Skills Repository Separation v2.0.0 #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Changes:
- Set SUPERPOWERS_SKILLS_ROOT environment variable
- Call lib/initialize-skills.sh to handle clone/fetch/notification
- Update find-skills path to ${SUPERPOWERS_SKILLS_ROOT}/skills/using-skills/find-skills
- Update using-skills path (renamed from getting-started)
- Include initialization output in session start message
- Update slash command paths to use SUPERPOWERS_SKILLS_ROOT
Implements Task 7 from skills-repo-separation plan.
- Fix auto-update description (now auto-fetches and fast-forwards) - Update skill name: updating-skills → pulling-updates-from-skills-repository - Remove obsolete setting-up-personal-superpowers reference - Add pulling-updates-from-skills-repository to Meta skills list - Add prominent skills repository link - Update sharing-skills description (branch and PR workflow)
Documents all changes since v1.0.0: - Skills repository separation (breaking change) - New problem-solving and research skills (PR #1) - Personal superpowers system (PR #2, later replaced) - Auto-update functionality - Skills improvements (using-skills v4.0.0, sharing-skills v2.0.0) - Tools improvements (find-skills, skill-run) - Plugin infrastructure changes - Migration guide for existing users
Provides prose description of v2.0 changes before diving into details: - Skills repository separation (what it means, why it matters) - Nine new skills (problem-solving, research, architecture) - using-skills rewrite (imperative tone, clearer structure) - Improved tools (find-skills outputs usable paths) - Community focus (easier to contribute and improve skills)
Following The Elements of Style: - Use active voice (Rule 10): "We rewrote" not "has been rewritten" - Omit needless words (Rule 13): removed "automatically", "optionally", etc. - Break up long sentences: split run-on second sentence into short, direct statements - Put statements in positive form (Rule 11): direct assertions rather than negatives - Keep it concise: "Claude notifies" not "Claude will notify" Overview section now more direct and forceful while maintaining all information.
|
Caution Review failedThe pull request is closed. WalkthroughSeparates skills into an external repository managed via a local clone, introduces SUPERPOWERS_SKILLS_ROOT, rewrites session-start hook to initialize/update skills and load content from the external repo, adds lib/initialize-skills.sh, removes legacy setup and runner scripts, and deletes extensive in-repo skills documentation and the conversations indexing/search tool. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant Plugin as Plugin (SessionStart Hook)
participant Init as initialize-skills.sh
participant Git as Git Remote(s)
participant Skills as Local Skills Repo
User->>Plugin: Start session
Plugin->>Init: Run initialize-skills.sh (SKILLS_DIR)
Init->>Skills: Check repo/migrate or clone
alt Repo exists
Init->>Git: Fetch tracking remote
Init->>Skills: Fast-forward if possible
Init-->>Plugin: Flags {SKILLS_UPDATED?, SKILLS_BEHIND?}
else Fresh or migrated
Init->>Git: Clone and set remotes/fork (gh optional)
Init-->>Plugin: Init complete
end
Plugin->>Skills: Load using-skills content + find-skills
Plugin-->>User: JSON payload with context, status_message
sequenceDiagram
autonumber
participant Init as initialize-skills.sh
participant Git as Git Remote(s)
Init->>Init: Detect tracking remote
Init->>Git: fetch
Init->>Init: Compute LOCAL/REMOTE/BASE
alt Fast-forwardable (LOCAL==BASE)
Init->>Git: merge --ff-only
Init-->>Init: SKILLS_UPDATED=true
else Behind but not FF
Init-->>Init: SKILLS_BEHIND=true
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
Comment |
Determine and fetch from the current branch's tracking remote instead of hardcoding upstream/origin. This ensures the correct remote is updated regardless of fork/upstream setup. Fixes issue where auto-update wasn't fetching on session start.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (7)
README.md (1)
14-14: Wrap the bare URL in Markdown syntax.Markdown lint (MD034) flags the naked URL here. Wrap it in link syntax so the lint check passes. As per static analysis.
-**Skills Repository:** https://github.com/obra/superpowers-skills +**Skills Repository:** [obra/superpowers-skills](https://github.com/obra/superpowers-skills)docs/RELEASE-NOTES-v2.0.0.md (2)
115-133: Add language identifiers to fenced code blocksSpecify a language for syntax highlighting and to satisfy MD040.
Apply for the two blocks:
-``` +```text superpowers/ ├── skills/ │ ├── getting-started/ │ └── ... └── scripts/ ├── find-skills └── skill-run -``` +```-``` +```text ~/.config/superpowers/skills/ (cloned from obra/superpowers-skills) └── skills/ ├── using-skills/ │ ├── find-skills │ ├── skill-run │ └── SKILL.md ├── meta/ │ └── pulling-updates-from-skills-repository/ └── ... -``` +```
161-177: Replace bare URLs with Markdown linksSatisfy MD034 and improve readability.
-- **Skills Repository:** https://github.com/obra/superpowers-skills -- **Plugin Repository:** https://github.com/obra/superpowers -- **Skills Repository v1.0.0:** https://github.com/obra/superpowers-skills/releases/tag/v1.0.0 -- **Report Issues:** https://github.com/obra/superpowers/issues +- **Skills Repository:** <https://github.com/obra/superpowers-skills> +- **Plugin Repository:** <https://github.com/obra/superpowers> +- **Skills Repository v1.0.0:** <https://github.com/obra/superpowers-skills/releases/tag/v1.0.0> +- **Report Issues:** <https://github.com/obra/superpowers/issues>-- Default location: `~/.config/superpowers/skills/` -- Skills repository: https://github.com/obra/superpowers-skills +- Default location: `~/.config/superpowers/skills/` +- Skills repository: <https://github.com/obra/superpowers-skills>RELEASE-NOTES.md (2)
84-94: Add language identifiers to fenced code blocksUse bash for shell snippets to satisfy MD040 and improve highlighting.
-``` +```bash # In Claude Code /plugin marketplace add obra/superpowers-marketplace /plugin install superpowers@superpowers-marketplace -``` +```-``` +```bash cp -r ~/.config/superpowers/skills ~/superpowers-skills-backup -``` +```-``` +```bash /plugin update superpowers -``` +```
14-14: Replace bare URLs with Markdown linksConform to MD034 and standardize presentation.
-The headline change is **skills repository separation**: all skills, scripts, and documentation have moved from the plugin into a dedicated repository (https://github.com/obra/superpowers-skills). +The headline change is **skills repository separation**: all skills, scripts, and documentation have moved from the plugin into a dedicated repository (<https://github.com/obra/superpowers-skills>).-- Skills repository is now at https://github.com/obra/superpowers-skills +- Skills repository is now at <https://github.com/obra/superpowers-skills>-**Full Changelog:** https://github.com/obra/superpowers/compare/dd013f6...main -**Skills Repository:** https://github.com/obra/superpowers-skills -**Issues:** https://github.com/obra/superpowers/issues +**Full Changelog:** <https://github.com/obra/superpowers/compare/dd013f6...main> +**Skills Repository:** <https://github.com/obra/superpowers-skills> +**Issues:** <https://github.com/obra/superpowers/issues>Also applies to: 170-171, 229-231
lib/initialize-skills.sh (1)
12-19: Minor: tolerate missing upstream/tracking more explicitlyYour guards are fine. Optional: short-circuit when no upstream is configured to avoid subshell git errors/log noise.
-TRACKING_REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null | cut -d'/' -f1 || echo "") +TRACKING_REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null | cut -d'/' -f1 || echo "") +if [ -z "$TRACKING_REMOTE" ]; then + # No upstream configured; nothing to update yet. + exit 0 +fiAlso applies to: 22-41
hooks/session-start.sh (1)
15-18: Remove or use unused variableskills_updated is parsed but unused. Either drop it or show a brief “updated” note.
-skills_updated=$(echo "$init_output" | grep "SKILLS_UPDATED=true" || echo "") skills_behind=$(echo "$init_output" | grep "SKILLS_BEHIND=true" || echo "") # Remove status flags from display output init_output=$(echo "$init_output" | grep -v "SKILLS_UPDATED=true" | grep -v "SKILLS_BEHIND=true")Or, to display a success banner:
if [ -n "$skills_behind" ]; then status_message="\n\n⚠️ New skills available from upstream. Ask me to use the pulling-updates-from-skills-repository skill." +elif echo "$init_output" | grep -q "Skills updated successfully"; then + status_message="\n\n✓ Skills updated to latest." fi
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
skills/collaboration/remembering-conversations/tool/package-lock.jsonis excluded by!**/package-lock.jsonskills/meta/writing-skills/graphviz-conventions.dotis excluded by!**/*.dot
📒 Files selected for processing (88)
README.md(5 hunks)RELEASE-NOTES.md(1 hunks)commands/brainstorm.md(1 hunks)commands/execute-plan.md(1 hunks)commands/write-plan.md(1 hunks)docs/RELEASE-NOTES-v2.0.0.md(1 hunks)hooks/session-start.sh(1 hunks)hooks/setup-personal-superpowers.sh(0 hunks)lib/initialize-skills.sh(1 hunks)scripts/find-skills(0 hunks)scripts/skill-run(0 hunks)skills/REQUESTS.md(0 hunks)skills/architecture/ABOUT.md(0 hunks)skills/architecture/preserving-productive-tensions/SKILL.md(0 hunks)skills/collaboration/brainstorming/SKILL.md(0 hunks)skills/collaboration/dispatching-parallel-agents/SKILL.md(0 hunks)skills/collaboration/executing-plans/SKILL.md(0 hunks)skills/collaboration/finishing-a-development-branch/SKILL.md(0 hunks)skills/collaboration/receiving-code-review/SKILL.md(0 hunks)skills/collaboration/remembering-conversations/DEPLOYMENT.md(0 hunks)skills/collaboration/remembering-conversations/INDEXING.md(0 hunks)skills/collaboration/remembering-conversations/SKILL.md(0 hunks)skills/collaboration/remembering-conversations/tool/.gitignore(0 hunks)skills/collaboration/remembering-conversations/tool/hooks/sessionEnd(0 hunks)skills/collaboration/remembering-conversations/tool/index-conversations(0 hunks)skills/collaboration/remembering-conversations/tool/install-hook(0 hunks)skills/collaboration/remembering-conversations/tool/migrate-to-config.sh(0 hunks)skills/collaboration/remembering-conversations/tool/package.json(0 hunks)skills/collaboration/remembering-conversations/tool/prompts/search-agent.md(0 hunks)skills/collaboration/remembering-conversations/tool/search-conversations(0 hunks)skills/collaboration/remembering-conversations/tool/src/db.test.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/db.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/embeddings.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/index-cli.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/indexer.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/parser.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/paths.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/search-agent-template.test.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/search-cli.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/search.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/summarizer.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/types.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/verify.test.ts(0 hunks)skills/collaboration/remembering-conversations/tool/src/verify.ts(0 hunks)skills/collaboration/remembering-conversations/tool/test-deployment.sh(0 hunks)skills/collaboration/remembering-conversations/tool/test-install-hook.sh(0 hunks)skills/collaboration/remembering-conversations/tool/tsconfig.json(0 hunks)skills/collaboration/requesting-code-review/SKILL.md(0 hunks)skills/collaboration/requesting-code-review/code-reviewer.md(0 hunks)skills/collaboration/subagent-driven-development/SKILL.md(0 hunks)skills/collaboration/using-git-worktrees/SKILL.md(0 hunks)skills/collaboration/writing-plans/SKILL.md(0 hunks)skills/debugging/defense-in-depth/SKILL.md(0 hunks)skills/debugging/root-cause-tracing/SKILL.md(0 hunks)skills/debugging/root-cause-tracing/find-polluter.sh(0 hunks)skills/debugging/systematic-debugging/CREATION-LOG.md(0 hunks)skills/debugging/systematic-debugging/SKILL.md(0 hunks)skills/debugging/systematic-debugging/test-academic.md(0 hunks)skills/debugging/systematic-debugging/test-pressure-1.md(0 hunks)skills/debugging/systematic-debugging/test-pressure-2.md(0 hunks)skills/debugging/systematic-debugging/test-pressure-3.md(0 hunks)skills/debugging/verification-before-completion/SKILL.md(0 hunks)skills/getting-started/SKILL.md(0 hunks)skills/meta/gardening-skills-wiki/SKILL.md(0 hunks)skills/meta/gardening-skills-wiki/analyze-search-gaps.sh(0 hunks)skills/meta/gardening-skills-wiki/check-index-coverage.sh(0 hunks)skills/meta/gardening-skills-wiki/check-links.sh(0 hunks)skills/meta/gardening-skills-wiki/check-naming.sh(0 hunks)skills/meta/gardening-skills-wiki/garden.sh(0 hunks)skills/meta/setting-up-personal-superpowers/SKILL.md(0 hunks)skills/meta/sharing-skills/SKILL.md(0 hunks)skills/meta/testing-skills-with-subagents/SKILL.md(0 hunks)skills/meta/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md(0 hunks)skills/meta/writing-skills/SKILL.md(0 hunks)skills/meta/writing-skills/persuasion-principles.md(0 hunks)skills/problem-solving/ABOUT.md(0 hunks)skills/problem-solving/collision-zone-thinking/SKILL.md(0 hunks)skills/problem-solving/inversion-exercise/SKILL.md(0 hunks)skills/problem-solving/meta-pattern-recognition/SKILL.md(0 hunks)skills/problem-solving/scale-game/SKILL.md(0 hunks)skills/problem-solving/simplification-cascades/SKILL.md(0 hunks)skills/problem-solving/when-stuck/SKILL.md(0 hunks)skills/research/ABOUT.md(0 hunks)skills/research/tracing-knowledge-lineages/SKILL.md(0 hunks)skills/testing/condition-based-waiting/SKILL.md(0 hunks)skills/testing/condition-based-waiting/example.ts(0 hunks)skills/testing/test-driven-development/SKILL.md(0 hunks)skills/testing/testing-anti-patterns/SKILL.md(0 hunks)
💤 Files with no reviewable changes (80)
- skills/collaboration/remembering-conversations/tool/src/types.ts
- skills/collaboration/remembering-conversations/INDEXING.md
- skills/problem-solving/ABOUT.md
- skills/debugging/root-cause-tracing/find-polluter.sh
- skills/architecture/ABOUT.md
- skills/meta/testing-skills-with-subagents/examples/CLAUDE_MD_TESTING.md
- skills/collaboration/remembering-conversations/tool/index-conversations
- skills/collaboration/remembering-conversations/tool/.gitignore
- skills/collaboration/remembering-conversations/tool/src/parser.ts
- hooks/setup-personal-superpowers.sh
- skills/testing/condition-based-waiting/SKILL.md
- skills/testing/test-driven-development/SKILL.md
- skills/debugging/defense-in-depth/SKILL.md
- skills/collaboration/remembering-conversations/tool/src/search-cli.ts
- skills/collaboration/remembering-conversations/tool/src/paths.ts
- skills/problem-solving/simplification-cascades/SKILL.md
- skills/meta/gardening-skills-wiki/garden.sh
- skills/collaboration/remembering-conversations/tool/install-hook
- skills/collaboration/dispatching-parallel-agents/SKILL.md
- skills/collaboration/remembering-conversations/tool/prompts/search-agent.md
- skills/problem-solving/scale-game/SKILL.md
- skills/meta/gardening-skills-wiki/check-links.sh
- skills/collaboration/remembering-conversations/tool/src/search.ts
- skills/collaboration/remembering-conversations/tool/search-conversations
- skills/collaboration/remembering-conversations/tool/src/db.test.ts
- skills/problem-solving/when-stuck/SKILL.md
- skills/testing/condition-based-waiting/example.ts
- scripts/skill-run
- skills/collaboration/remembering-conversations/tool/src/indexer.ts
- skills/debugging/verification-before-completion/SKILL.md
- skills/collaboration/remembering-conversations/tool/test-deployment.sh
- skills/meta/writing-skills/persuasion-principles.md
- skills/meta/setting-up-personal-superpowers/SKILL.md
- skills/problem-solving/meta-pattern-recognition/SKILL.md
- skills/collaboration/remembering-conversations/tool/src/db.ts
- skills/collaboration/using-git-worktrees/SKILL.md
- skills/collaboration/remembering-conversations/DEPLOYMENT.md
- skills/meta/gardening-skills-wiki/check-naming.sh
- skills/collaboration/brainstorming/SKILL.md
- scripts/find-skills
- skills/collaboration/remembering-conversations/SKILL.md
- skills/meta/gardening-skills-wiki/analyze-search-gaps.sh
- skills/collaboration/remembering-conversations/tool/migrate-to-config.sh
- skills/collaboration/requesting-code-review/code-reviewer.md
- skills/collaboration/remembering-conversations/tool/src/index-cli.ts
- skills/collaboration/remembering-conversations/tool/hooks/sessionEnd
- skills/REQUESTS.md
- skills/debugging/systematic-debugging/SKILL.md
- skills/debugging/systematic-debugging/test-academic.md
- skills/collaboration/finishing-a-development-branch/SKILL.md
- skills/problem-solving/inversion-exercise/SKILL.md
- skills/collaboration/writing-plans/SKILL.md
- skills/problem-solving/collision-zone-thinking/SKILL.md
- skills/collaboration/receiving-code-review/SKILL.md
- skills/collaboration/remembering-conversations/tool/src/embeddings.ts
- skills/debugging/systematic-debugging/CREATION-LOG.md
- skills/getting-started/SKILL.md
- skills/research/ABOUT.md
- skills/collaboration/remembering-conversations/tool/test-install-hook.sh
- skills/collaboration/executing-plans/SKILL.md
- skills/debugging/systematic-debugging/test-pressure-2.md
- skills/debugging/systematic-debugging/test-pressure-1.md
- skills/meta/writing-skills/SKILL.md
- skills/collaboration/remembering-conversations/tool/src/search-agent-template.test.ts
- skills/meta/sharing-skills/SKILL.md
- skills/testing/testing-anti-patterns/SKILL.md
- skills/collaboration/remembering-conversations/tool/tsconfig.json
- skills/collaboration/remembering-conversations/tool/src/verify.ts
- skills/meta/gardening-skills-wiki/SKILL.md
- skills/debugging/systematic-debugging/test-pressure-3.md
- skills/architecture/preserving-productive-tensions/SKILL.md
- skills/debugging/root-cause-tracing/SKILL.md
- skills/collaboration/remembering-conversations/tool/package.json
- skills/collaboration/requesting-code-review/SKILL.md
- skills/meta/gardening-skills-wiki/check-index-coverage.sh
- skills/collaboration/subagent-driven-development/SKILL.md
- skills/research/tracing-knowledge-lineages/SKILL.md
- skills/collaboration/remembering-conversations/tool/src/summarizer.ts
- skills/meta/testing-skills-with-subagents/SKILL.md
- skills/collaboration/remembering-conversations/tool/src/verify.test.ts
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
README.md
14-14: Bare URL used
(MD034, no-bare-urls)
RELEASE-NOTES.md
14-14: Bare URL used
(MD034, no-bare-urls)
84-84: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
89-89: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
94-94: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
170-170: Bare URL used
(MD034, no-bare-urls)
171-171: Bare URL used
(MD034, no-bare-urls)
docs/RELEASE-NOTES-v2.0.0.md
115-115: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
126-126: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
161-161: Bare URL used
(MD034, no-bare-urls)
162-162: Bare URL used
(MD034, no-bare-urls)
163-163: Bare URL used
(MD034, no-bare-urls)
164-164: Bare URL used
(MD034, no-bare-urls)
177-177: Bare URL used
(MD034, no-bare-urls)
🪛 Shellcheck (0.11.0)
lib/initialize-skills.sh
[warning] 12-12: This { is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 12-12: This } is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 23-23: This { is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 23-23: This } is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 24-24: This { is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 24-24: This } is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 32-32: This { is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
[warning] 32-32: This } is literal. Check expression (missing ;/\n?) or quote it.
(SC1083)
hooks/session-start.sh
[warning] 15-15: skills_updated appears unused. Verify use (or export if used externally).
(SC2034)
🔇 Additional comments (4)
commands/execute-plan.md (1)
5-5: Path update looks correctMatches the new env var and repo layout.
commands/write-plan.md (1)
5-5: Path update looks correctConsistent with the new skills repo structure.
commands/brainstorm.md (1)
5-5: Path update looks correctAligned with the new skills root env var.
hooks/session-start.sh (1)
21-29: Good resilience and JSON escapingFallbacks on errors and escaping look solid for startup UX.
| if [ -d "${HOME}/.config/superpowers/.git" ]; then | ||
| echo "Found existing installation. Backing up..." | ||
| mv "${HOME}/.config/superpowers/.git" "${HOME}/.config/superpowers/.git.bak" | ||
|
|
||
| if [ -d "${HOME}/.config/superpowers/skills" ]; then | ||
| mv "${HOME}/.config/superpowers/skills" "${HOME}/.config/superpowers/skills.bak" | ||
| echo "Your old skills are in ~/.config/superpowers/skills.bak" | ||
| fi | ||
| fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make migration backups idempotent and safe
mv to fixed .git.bak/skills.bak will fail if they already exist (set -e aborts). Use timestamped or unique backup names.
-if [ -d "${HOME}/.config/superpowers/.git" ]; then
+if [ -d "${HOME}/.config/superpowers/.git" ]; then
echo "Found existing installation. Backing up..."
- mv "${HOME}/.config/superpowers/.git" "${HOME}/.config/superpowers/.git.bak"
+ ts="$(date +%Y%m%d-%H%M%S)"
+ mv "${HOME}/.config/superpowers/.git" "${HOME}/.config/superpowers/.git.bak.${ts}"
- if [ -d "${HOME}/.config/superpowers/skills" ]; then
- mv "${HOME}/.config/superpowers/skills" "${HOME}/.config/superpowers/skills.bak"
- echo "Your old skills are in ~/.config/superpowers/skills.bak"
+ if [ -d "${HOME}/.config/superpowers/skills" ]; then
+ mv "${HOME}/.config/superpowers/skills" "${HOME}/.config/superpowers/skills.bak.${ts}"
+ echo "Your old skills are in ~/.config/superpowers/skills.bak.${ts}"
fi
fi📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if [ -d "${HOME}/.config/superpowers/.git" ]; then | |
| echo "Found existing installation. Backing up..." | |
| mv "${HOME}/.config/superpowers/.git" "${HOME}/.config/superpowers/.git.bak" | |
| if [ -d "${HOME}/.config/superpowers/skills" ]; then | |
| mv "${HOME}/.config/superpowers/skills" "${HOME}/.config/superpowers/skills.bak" | |
| echo "Your old skills are in ~/.config/superpowers/skills.bak" | |
| fi | |
| fi | |
| if [ -d "${HOME}/.config/superpowers/.git" ]; then | |
| echo "Found existing installation. Backing up..." | |
| ts="$(date +%Y%m%d-%H%M%S)" | |
| mv "${HOME}/.config/superpowers/.git" "${HOME}/.config/superpowers/.git.bak.${ts}" | |
| if [ -d "${HOME}/.config/superpowers/skills" ]; then | |
| mv "${HOME}/.config/superpowers/skills" "${HOME}/.config/superpowers/skills.bak.${ts}" | |
| echo "Your old skills are in ~/.config/superpowers/skills.bak.${ts}" | |
| fi | |
| fi |
🤖 Prompt for AI Agents
In lib/initialize-skills.sh around lines 51 to 59, the current mv to fixed
.git.bak and skills.bak is not idempotent and will fail if those backup names
already exist (breaking scripts with set -e); change the backup strategy to
produce unique backup names (e.g., append a timestamp or use mktemp-style
suffix), check for target existence and choose a new unique name if needed, then
move the directories into those unique backup paths and emit the chosen backup
paths to the user so repeated runs won’t fail.
| if command -v gh &> /dev/null; then | ||
| echo "" | ||
| echo "GitHub CLI detected. Would you like to fork superpowers-skills?" | ||
| echo "Forking allows you to share skill improvements with the community." | ||
| echo "" | ||
| read -p "Fork superpowers-skills? (y/N): " -n 1 -r | ||
| echo | ||
|
|
||
| if [[ $REPLY =~ ^[Yy]$ ]]; then | ||
| gh repo fork obra/superpowers-skills --remote=true | ||
| echo "Forked! You can now contribute skills back to the community." | ||
| else | ||
| git remote add upstream "$SKILLS_REPO" | ||
| fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avoid blocking prompts in non-interactive environments
Session start may run non-interactively. Gate the prompt on TTY and default to “No,” or allow an env override. Also, pre-check gh auth.
-if command -v gh &> /dev/null; then
+if command -v gh &> /dev/null; then
echo ""
echo "GitHub CLI detected. Would you like to fork superpowers-skills?"
echo "Forking allows you to share skill improvements with the community."
echo ""
- read -p "Fork superpowers-skills? (y/N): " -n 1 -r
- echo
+ do_fork="N"
+ if [ -t 0 ]; then
+ read -p "Fork superpowers-skills? (y/N): " -n 1 -r
+ echo
+ do_fork="$REPLY"
+ fi
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- gh repo fork obra/superpowers-skills --remote=true
+ if [[ "$do_fork" =~ ^[Yy]$ ]]; then
+ if gh auth status >/dev/null 2>&1; then
+ gh repo fork obra/superpowers-skills --remote=true
+ else
+ echo "Skipping fork (gh not authenticated). Run 'gh auth login' later."
+ git remote add upstream "$SKILLS_REPO"
+ fi
echo "Forked! You can now contribute skills back to the community."
else
git remote add upstream "$SKILLS_REPO"
fi📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if command -v gh &> /dev/null; then | |
| echo "" | |
| echo "GitHub CLI detected. Would you like to fork superpowers-skills?" | |
| echo "Forking allows you to share skill improvements with the community." | |
| echo "" | |
| read -p "Fork superpowers-skills? (y/N): " -n 1 -r | |
| echo | |
| if [[ $REPLY =~ ^[Yy]$ ]]; then | |
| gh repo fork obra/superpowers-skills --remote=true | |
| echo "Forked! You can now contribute skills back to the community." | |
| else | |
| git remote add upstream "$SKILLS_REPO" | |
| fi | |
| if command -v gh &> /dev/null; then | |
| echo "" | |
| echo "GitHub CLI detected. Would you like to fork superpowers-skills?" | |
| echo "Forking allows you to share skill improvements with the community." | |
| echo "" | |
| do_fork="N" | |
| if [ -t 0 ]; then | |
| read -p "Fork superpowers-skills? (y/N): " -n 1 -r | |
| echo | |
| do_fork="$REPLY" | |
| fi | |
| if [[ "$do_fork" =~ ^[Yy]$ ]]; then | |
| if gh auth status >/dev/null 2>&1; then | |
| gh repo fork obra/superpowers-skills --remote=true | |
| else | |
| echo "Skipping fork (gh not authenticated). Run 'gh auth login' later." | |
| git remote add upstream "$SKILLS_REPO" | |
| fi | |
| echo "Forked! You can now contribute skills back to the community." | |
| else | |
| git remote add upstream "$SKILLS_REPO" | |
| fi |
| - Fixed path references throughout hooks and commands | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify all legacy path references were updated
Claimed fix for path references; double-check there’s no remaining CLAUDE_PLUGIN_ROOT.
🏁 Script executed:
#!/bin/bash
# Find any lingering references to CLAUDE_PLUGIN_ROOT
rg -n -C2 -S '\bCLAUDE_PLUGIN_ROOT\b' || trueLength of output: 1111
Replace remaining legacy path in hooks/hooks.json
- hooks/hooks.json:9 — change
"${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh"to"${SUPERPOWERS_SKILLS_ROOT}/hooks/session-start.sh"
🤖 Prompt for AI Agents
In RELEASE-NOTES.md around lines 123 to 124, update the documented legacy path
reference: replace the entry for hooks/hooks.json line 9 that currently shows
"${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh" with the new variable
"${SUPERPOWERS_SKILLS_ROOT}/hooks/session-start.sh" so the release note
accurately reflects the change to the hooks path.
f9c6368 to
9eefffc
Compare
Skills Repository Separation v2.0.0
Summary
Separates skills from the plugin into a dedicated repository (obra/superpowers-skills), transforming superpowers from a monolithic plugin into a lightweight shim.
Key changes:
~/.config/superpowers/skills/Breaking changes:
Migration
Fresh installs handle everything automatically. Existing installations will be migrated on first run:
~/.config/superpowers/.git→.git.bakskills.bakTest Plan
Related
Summary by CodeRabbit
New Features
Breaking Changes
Improvements
Documentation
Bug Fixes