@complexthings/superpowers-agent 8.2.2 → 8.3.0
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/docs/SUPERPOWERS.md +15 -81
- package/.agents/superpowers-agent +141 -128
- package/.agents/templates/AGENTS.md.template +35 -15
- package/.agents/templates/SUPERPOWERS.md.template +15 -81
- package/.github/workflows/main.yaml +1 -0
- package/package.json +1 -1
- package/.agents/prompts/001-copilot-tool-mapping-do/001-copilot-tool-mapping-do.md +0 -116
- package/.agents/prompts/001-copilot-tool-mapping-do/SUMMARY.md +0 -72
- package/.agents/prompts/001-copilot-tool-mapping-do/copilot-tool-mapping-do-output.md +0 -83
- package/.agents/prompts/001-release-management-do/001-release-management-do.md +0 -161
- package/.agents/prompts/001-release-management-do/SUMMARY.md +0 -19
- package/.agents/prompts/001-release-management-do/completed/001-release-management-do.md +0 -161
- package/.agents/prompts/002-pull-command-do/SUMMARY.md +0 -28
- package/.agents/prompts/002-pull-command-do/completed/002-pull-command-do.md +0 -122
- package/.agents/prompts/002-pull-command-do/pull-command-do-output.md +0 -174
- package/.agents/prompts/command_updates_prompt.md +0 -69
- package/.agents/prompts/current_prompt.md +0 -8
- package/.agents/prompts/post-migration-fixes-round-three.prompt.md +0 -62
- package/.agents/prompts/post-migration-fixes-round-two.prompt.md +0 -37
- package/.agents/prompts/post-migration-fixes.prompt.md +0 -90
- package/.agents/prompts/refactor.prompt.md +0 -33
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
number: 001
|
|
3
|
-
topic: release-management
|
|
4
|
-
purpose: do
|
|
5
|
-
dependencies: []
|
|
6
|
-
created: 2025-11-29
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Release Management - Do
|
|
10
|
-
|
|
11
|
-
<objective>
|
|
12
|
-
Create and publish a new version release for the superpowers-agent project
|
|
13
|
-
|
|
14
|
-
Purpose: Systematically document changes, tag releases, and publish updates to maintain clear version history and enable users to track improvements
|
|
15
|
-
Output: Updated README.md, RELEASE-NOTES.md, git tag, and pushed branches to origin
|
|
16
|
-
</objective>
|
|
17
|
-
|
|
18
|
-
<context>
|
|
19
|
-
Project structure:
|
|
20
|
-
- `/Users/greg/sites/ai/superpowers/` - Repository root
|
|
21
|
-
- `/Users/greg/sites/ai/superpowers/.agents/` - Agents configuration and superpowers-agent source
|
|
22
|
-
- `README.md` - Main documentation with "What's New" section
|
|
23
|
-
- `RELEASE-NOTES.md` - Comprehensive release history
|
|
24
|
-
- `.agents/package.json` - Version number (authoritative source)
|
|
25
|
-
- Working branch: `auto-updating` (where releases are prepared)
|
|
26
|
-
- Main branch: `main` (where releases are finalized)
|
|
27
|
-
|
|
28
|
-
@README.md
|
|
29
|
-
@RELEASE-NOTES.md
|
|
30
|
-
@.agents/package.json
|
|
31
|
-
</context>
|
|
32
|
-
|
|
33
|
-
<requirements>
|
|
34
|
-
- Review git history since last version tag to understand changes
|
|
35
|
-
- Document all changes comprehensively in RELEASE-NOTES.md
|
|
36
|
-
- Update README.md "What's New" section with concise highlights
|
|
37
|
-
- Version number must match semantic versioning (MAJOR.MINOR.PATCH)
|
|
38
|
-
- MAJOR version for breaking changes or complete rewrites
|
|
39
|
-
- MINOR version for new features (backward compatible)
|
|
40
|
-
- PATCH version for bug fixes and documentation updates
|
|
41
|
-
- Create annotated git tag with descriptive message
|
|
42
|
-
- Push changes to auto-updating branch first
|
|
43
|
-
- Merge auto-updating into main
|
|
44
|
-
- Push all branches and tags to origin remote
|
|
45
|
-
- Maintain chronological order in RELEASE-NOTES.md (newest first)
|
|
46
|
-
</requirements>
|
|
47
|
-
|
|
48
|
-
<implementation>
|
|
49
|
-
Follow this sequence:
|
|
50
|
-
|
|
51
|
-
1. **Review Changes**
|
|
52
|
-
- Check current branch: `git branch --show-current`
|
|
53
|
-
- Review commits since last tag: `git log v{LAST_VERSION}..HEAD --oneline`
|
|
54
|
-
- Review file changes: `git diff v{LAST_VERSION}..HEAD --stat`
|
|
55
|
-
- Understand the scope and impact of changes
|
|
56
|
-
|
|
57
|
-
2. **Update Documentation**
|
|
58
|
-
- Update README.md "What's New" section:
|
|
59
|
-
- Add new version at top with date
|
|
60
|
-
- Include 3-5 bullet points with key highlights
|
|
61
|
-
- Use emojis for visual hierarchy (🏗️ 📦 🔧 ✅)
|
|
62
|
-
- Move previous "What's New" to "Previous Releases" section
|
|
63
|
-
- Update RELEASE-NOTES.md:
|
|
64
|
-
- Add comprehensive new version section at top (after intro)
|
|
65
|
-
- Include detailed subsections as appropriate:
|
|
66
|
-
- Major features/changes
|
|
67
|
-
- New capabilities
|
|
68
|
-
- Improvements
|
|
69
|
-
- Bug fixes
|
|
70
|
-
- Breaking changes (if any)
|
|
71
|
-
- Migration guidance
|
|
72
|
-
- Technical details
|
|
73
|
-
- Use markdown formatting for clarity
|
|
74
|
-
- Include code examples where helpful
|
|
75
|
-
|
|
76
|
-
3. **Commit Documentation**
|
|
77
|
-
- Stage changes: `git add README.md RELEASE-NOTES.md`
|
|
78
|
-
- Commit with descriptive message:
|
|
79
|
-
```
|
|
80
|
-
docs: Release v{VERSION} - {Brief Description}
|
|
81
|
-
|
|
82
|
-
- Update README.md with v{VERSION} highlights
|
|
83
|
-
- Add comprehensive v{VERSION} release notes
|
|
84
|
-
- {Other notable documentation changes}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
4. **Create and Push Tag**
|
|
88
|
-
- Create annotated tag:
|
|
89
|
-
```
|
|
90
|
-
git tag -a v{VERSION} -m "v{VERSION} - {Brief Description}
|
|
91
|
-
|
|
92
|
-
{2-3 sentence summary of release}
|
|
93
|
-
|
|
94
|
-
See RELEASE-NOTES.md for full details."
|
|
95
|
-
```
|
|
96
|
-
- Push tag: `git push origin v{VERSION}`
|
|
97
|
-
|
|
98
|
-
5. **Push Auto-Updating Branch**
|
|
99
|
-
- Verify on auto-updating branch
|
|
100
|
-
- Push: `git push origin auto-updating`
|
|
101
|
-
|
|
102
|
-
6. **Merge to Main**
|
|
103
|
-
- Checkout main: `git checkout main`
|
|
104
|
-
- Merge auto-updating: `git merge auto-updating`
|
|
105
|
-
- Verify merge successful
|
|
106
|
-
- Push main: `git push origin main`
|
|
107
|
-
|
|
108
|
-
Avoid:
|
|
109
|
-
- Generic commit messages ("Update docs", "Version bump")
|
|
110
|
-
- Missing version sections in either README or RELEASE-NOTES
|
|
111
|
-
- Pushing tags before pushing commits
|
|
112
|
-
- Skipping the auto-updating → main merge flow
|
|
113
|
-
</implementation>
|
|
114
|
-
|
|
115
|
-
<output>
|
|
116
|
-
Modify files:
|
|
117
|
-
- `README.md` - Update "What's New" section with new version highlights
|
|
118
|
-
- `RELEASE-NOTES.md` - Add comprehensive new version section at top
|
|
119
|
-
|
|
120
|
-
Git operations:
|
|
121
|
-
- Commit documentation updates
|
|
122
|
-
- Create annotated tag: `v{VERSION}`
|
|
123
|
-
- Push tag to origin
|
|
124
|
-
- Push auto-updating branch to origin
|
|
125
|
-
- Merge auto-updating into main
|
|
126
|
-
- Push main branch to origin
|
|
127
|
-
|
|
128
|
-
Terminal output should confirm:
|
|
129
|
-
```
|
|
130
|
-
[auto-updating {hash}] docs: Release v{VERSION} - {Description}
|
|
131
|
-
To github.com:complexthings/superpowers.git
|
|
132
|
-
* [new tag] v{VERSION} -> v{VERSION}
|
|
133
|
-
To github.com:complexthings/superpowers.git
|
|
134
|
-
{old}..{new} auto-updating -> auto-updating
|
|
135
|
-
Updating {old}..{new}
|
|
136
|
-
Fast-forward
|
|
137
|
-
To github.com:complexthings/superpowers.git
|
|
138
|
-
{old}..{new} main -> main
|
|
139
|
-
```
|
|
140
|
-
</output>
|
|
141
|
-
|
|
142
|
-
<verification>
|
|
143
|
-
Before declaring complete:
|
|
144
|
-
- Verify README.md has new version section at top
|
|
145
|
-
- Verify RELEASE-NOTES.md has comprehensive new version section
|
|
146
|
-
- Verify tag created: `git tag | grep v{VERSION}`
|
|
147
|
-
- Verify tag pushed: `git ls-remote --tags origin | grep v{VERSION}`
|
|
148
|
-
- Verify auto-updating pushed: `git log origin/auto-updating -1`
|
|
149
|
-
- Verify main updated: `git log origin/main -1`
|
|
150
|
-
- Check GitHub repository shows new tag
|
|
151
|
-
- Check that both branches are at same commit
|
|
152
|
-
</verification>
|
|
153
|
-
|
|
154
|
-
<summary_requirements>
|
|
155
|
-
Create `SUMMARY.md` in same directory with:
|
|
156
|
-
- One-liner: Released v{VERSION} with {key changes}
|
|
157
|
-
- Key Findings: What changed, why it matters, impact on users
|
|
158
|
-
- Decisions Needed: None (or any follow-up releases needed)
|
|
159
|
-
- Blockers: None (or any issues discovered)
|
|
160
|
-
- Next Step: Monitor for issues, plan next release, or update documentation
|
|
161
|
-
</summary_requirements>
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Pull Command Summary
|
|
2
|
-
|
|
3
|
-
**One-liner:** Successfully implemented `superpowers pull` command with full support for HTTPS/SSH URLs, repository aliases, and local paths, enabling seamless skill updates across global and project-level installations.
|
|
4
|
-
|
|
5
|
-
## Key Findings
|
|
6
|
-
|
|
7
|
-
- **Code reuse maximized**: Leveraged 100% of existing helper functions (parseGitUrl, getInstallLocation, cloneRepository, installSingleSkill) for consistency and maintainability
|
|
8
|
-
- **Minimal changes required**: Only ~210 lines of code added (207 in installer.js, 3 in cli.js) by reusing the proven `runAdd()` pattern
|
|
9
|
-
- **Full feature parity**: Supports all URL types (HTTPS, SSH, tree URLs), repository aliases, local paths, and installation flags (--global, --project)
|
|
10
|
-
- **Update behavior achieved through replacement**: The existing `installSingleSkill()` function already handles removing and replacing existing skills (lines 166-168), so no special update logic was needed
|
|
11
|
-
- **All tests passing**: Build succeeded, help text displays correctly, repository alias resolution works, and the command successfully updates skills from SSH repositories
|
|
12
|
-
|
|
13
|
-
## Decisions Needed
|
|
14
|
-
|
|
15
|
-
None - implementation is complete and ready for use.
|
|
16
|
-
|
|
17
|
-
## Blockers
|
|
18
|
-
|
|
19
|
-
None
|
|
20
|
-
|
|
21
|
-
## Next Step
|
|
22
|
-
|
|
23
|
-
**Recommended:** Update the project README.md or user documentation to include the new `superpowers pull` command in the available commands list and usage examples. Consider adding a section explaining the difference between `add` and `pull` (semantically the same, but `pull` emphasizes update/replace behavior).
|
|
24
|
-
|
|
25
|
-
**Optional enhancements:**
|
|
26
|
-
- Add `--dry-run` flag to preview what would be updated without making changes
|
|
27
|
-
- Add timestamp tracking to skill.json to show when skills were last updated
|
|
28
|
-
- Add integration tests specifically for the pull command
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
number: 002
|
|
3
|
-
topic: pull-command
|
|
4
|
-
purpose: do
|
|
5
|
-
dependencies: []
|
|
6
|
-
created: 2025-12-03
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Pull Command - Do
|
|
10
|
-
|
|
11
|
-
<objective>
|
|
12
|
-
Implement a `superpowers pull` command that updates or adds skills from remote Git repositories or local file paths.
|
|
13
|
-
|
|
14
|
-
Purpose: Enable users to easily update existing skills or fetch new skills from configured repository aliases, enhancing the skill management workflow in Superpowers projects.
|
|
15
|
-
|
|
16
|
-
Output: A new `runPull` command function that integrates with the existing CLI infrastructure, supporting both HTTPS and SSH Git URLs, repository aliases, and local paths.
|
|
17
|
-
</objective>
|
|
18
|
-
|
|
19
|
-
<context>
|
|
20
|
-
The Superpowers agent already has a working `add` command in `.agents/src/skills/installer.js` that handles skill installation from various sources. The `pull` command should reuse most of this logic but focus on updating existing skills.
|
|
21
|
-
|
|
22
|
-
Referenced files:
|
|
23
|
-
@.agents/src/skills/installer.js
|
|
24
|
-
@.agents/src/cli.js
|
|
25
|
-
@.agents/src/core/config.js
|
|
26
|
-
|
|
27
|
-
Current architecture:
|
|
28
|
-
- Commands are defined in `src/cli.js` and imported from various modules
|
|
29
|
-
- Skill installation logic lives in `src/skills/installer.js`
|
|
30
|
-
- Helper functions: `parseGitUrl()`, `getInstallLocation()`, `cloneRepository()`, `installSingleSkill()`
|
|
31
|
-
- Repository aliases are stored in `.agents/config.json` and managed via `getRepositories()` and `addRepositoryToConfig()`
|
|
32
|
-
</context>
|
|
33
|
-
|
|
34
|
-
<requirements>
|
|
35
|
-
**Functional Requirements:**
|
|
36
|
-
- Accept same syntax as `add`: `superpowers pull <url-or-path|@alias> [path] [options]`
|
|
37
|
-
- Support HTTPS URLs (https://github.com/org/repo.git)
|
|
38
|
-
- Support SSH URLs (git@github.com:org/repo.git)
|
|
39
|
-
- Support repository aliases (@alias)
|
|
40
|
-
- Support local file paths
|
|
41
|
-
- Support --global and --project flags to control installation location
|
|
42
|
-
- Update existing skills if they already exist
|
|
43
|
-
- Add new skills if they don't exist
|
|
44
|
-
- Display clear progress messages during cloning and installation
|
|
45
|
-
|
|
46
|
-
**Quality Requirements:**
|
|
47
|
-
- Reuse existing helper functions from `installer.js` where possible
|
|
48
|
-
- Follow the same error handling patterns as `runAdd`
|
|
49
|
-
- Provide helpful error messages with context
|
|
50
|
-
- Match the CLI output style of other commands
|
|
51
|
-
|
|
52
|
-
**Constraints:**
|
|
53
|
-
- Must work with both project-level and global skill directories
|
|
54
|
-
- Must handle repository aliases correctly (check project config first, then global)
|
|
55
|
-
- Must clean up temporary directories after cloning
|
|
56
|
-
- Must not break existing `add` command functionality
|
|
57
|
-
</requirements>
|
|
58
|
-
|
|
59
|
-
<implementation>
|
|
60
|
-
**Approach:**
|
|
61
|
-
1. Create a new `runPull()` export function in `.agents/src/skills/installer.js`
|
|
62
|
-
2. Reuse helper functions: `parseGitUrl()`, `getInstallLocation()`, `cloneRepository()`, `getRepositories()`, `installSingleSkill()`
|
|
63
|
-
3. Add the command to CLI dispatcher in `.agents/src/cli.js`
|
|
64
|
-
4. Update help text to include the new pull command
|
|
65
|
-
|
|
66
|
-
**What to avoid and WHY:**
|
|
67
|
-
- Don't duplicate URL parsing logic - use existing `parseGitUrl()`
|
|
68
|
-
- Don't create separate installation logic - use existing `installSingleSkill()`
|
|
69
|
-
- Don't add complex dependency resolution - keep it simple for now
|
|
70
|
-
- Don't change the signature of existing helper functions - maintain backwards compatibility
|
|
71
|
-
|
|
72
|
-
**Integration points:**
|
|
73
|
-
- Import `runPull` in `cli.js` from `./skills/installer.js`
|
|
74
|
-
- Add 'pull' entry to commands object in `cli.js`
|
|
75
|
-
- Add help text line in default command handler
|
|
76
|
-
- Ensure help text follows existing format pattern
|
|
77
|
-
</implementation>
|
|
78
|
-
|
|
79
|
-
<output>
|
|
80
|
-
Modify existing files:
|
|
81
|
-
- `.agents/src/skills/installer.js` - Add `runPull()` function (~80-100 lines, similar structure to `runAdd()`)
|
|
82
|
-
- `.agents/src/cli.js` - Import and register the pull command (~3 line changes)
|
|
83
|
-
|
|
84
|
-
The `runPull()` function should:
|
|
85
|
-
- Parse command-line arguments (url/alias, optional path, flags)
|
|
86
|
-
- Display usage help if no arguments provided
|
|
87
|
-
- Resolve repository aliases (check project then global config)
|
|
88
|
-
- Parse Git URLs (HTTPS, SSH) or local paths
|
|
89
|
-
- Determine installation location (--global, --project, or config default)
|
|
90
|
-
- Clone repository to temporary directory if needed
|
|
91
|
-
- Read skill.json to get list of skills
|
|
92
|
-
- Install or update each skill to target location
|
|
93
|
-
- Display progress and results
|
|
94
|
-
- Clean up temporary clone directory
|
|
95
|
-
- Handle errors gracefully with helpful messages
|
|
96
|
-
</output>
|
|
97
|
-
|
|
98
|
-
<verification>
|
|
99
|
-
Before declaring complete:
|
|
100
|
-
- Run `superpowers pull --help` to verify help text displays correctly
|
|
101
|
-
- Test with HTTPS URL: `superpowers pull https://github.com/org/repo.git`
|
|
102
|
-
- Test with SSH URL: `superpowers pull git@github.com:org/repo.git`
|
|
103
|
-
- Test with repository alias: `superpowers pull @alias`
|
|
104
|
-
- Test with local path: `superpowers pull /path/to/skills`
|
|
105
|
-
- Test --global flag installs to ~/.agents/skills/
|
|
106
|
-
- Test --project flag installs to .agents/skills/
|
|
107
|
-
- Verify existing skills are updated (replaced)
|
|
108
|
-
- Verify new skills are added
|
|
109
|
-
- Verify error handling for invalid URLs
|
|
110
|
-
- Verify error handling for missing aliases
|
|
111
|
-
- Verify cleanup of temporary directories
|
|
112
|
-
- Run build and verify no errors: `cd .agents && npm run build`
|
|
113
|
-
</verification>
|
|
114
|
-
|
|
115
|
-
<summary_requirements>
|
|
116
|
-
Create `SUMMARY.md` in same directory with:
|
|
117
|
-
- One-liner: Substantive description of outcome
|
|
118
|
-
- Key Findings: What worked, any challenges encountered
|
|
119
|
-
- Decisions Needed: Any questions or choices requiring user input
|
|
120
|
-
- Blockers: Any external impediments or "None"
|
|
121
|
-
- Next Step: What to test or implement next (e.g., update README, add tests)
|
|
122
|
-
</summary_requirements>
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# Pull Command Implementation Output
|
|
2
|
-
|
|
3
|
-
## Implementation Summary
|
|
4
|
-
|
|
5
|
-
Successfully implemented the `superpowers pull` command that updates or adds skills from remote Git repositories or local file paths.
|
|
6
|
-
|
|
7
|
-
## Files Modified
|
|
8
|
-
|
|
9
|
-
### 1. `.agents/src/skills/installer.js`
|
|
10
|
-
|
|
11
|
-
Added `runPull()` function (lines 400-607, ~207 lines) with the following structure:
|
|
12
|
-
|
|
13
|
-
**Function signature:**
|
|
14
|
-
```javascript
|
|
15
|
-
export const runPull = () => { ... }
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
**Implementation details:**
|
|
19
|
-
- Parses command-line arguments (url/alias, optional path, flags)
|
|
20
|
-
- Displays comprehensive usage help if no arguments provided
|
|
21
|
-
- Resolves repository aliases by checking project config first, then global config
|
|
22
|
-
- Supports HTTPS URLs, SSH URLs, and local file paths via existing `parseGitUrl()` function
|
|
23
|
-
- Determines installation location using existing `getInstallLocation()` function
|
|
24
|
-
- Clones repositories to temporary directories using existing `cloneRepository()` function
|
|
25
|
-
- Reads skill.json to identify skills to install/update
|
|
26
|
-
- Installs or updates each skill using existing `installSingleSkill()` function
|
|
27
|
-
- Cleans up temporary clone directories after completion
|
|
28
|
-
- Provides detailed progress messages and error handling
|
|
29
|
-
- Reports results with "Updated:" prefix instead of "Installed:"
|
|
30
|
-
|
|
31
|
-
**Key differences from `runAdd()`:**
|
|
32
|
-
- Uses "Updating skill(s)..." instead of "Installing skill(s)..."
|
|
33
|
-
- Uses "Updated:" in output instead of "Installed:"
|
|
34
|
-
- Help text emphasizes update/replace behavior
|
|
35
|
-
- Otherwise functionally identical (updates are achieved by replacing existing skills)
|
|
36
|
-
|
|
37
|
-
### 2. `.agents/src/cli.js`
|
|
38
|
-
|
|
39
|
-
Made 3 targeted changes:
|
|
40
|
-
|
|
41
|
-
**Line 32:** Added `runPull` to imports
|
|
42
|
-
```javascript
|
|
43
|
-
import {
|
|
44
|
-
runAdd,
|
|
45
|
-
runAddRepository,
|
|
46
|
-
runPull // NEW
|
|
47
|
-
} from './skills/installer.js';
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Line 82:** Registered pull command in dispatcher
|
|
51
|
-
```javascript
|
|
52
|
-
'pull': runPull, // NEW
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Line 111:** Added help text entry
|
|
56
|
-
```javascript
|
|
57
|
-
superpowers-agent pull <url-or-path|@alias> [path] [options] # Update skills
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Features Implemented
|
|
61
|
-
|
|
62
|
-
### URL Support
|
|
63
|
-
- ✅ HTTPS URLs: `https://github.com/org/repo.git`
|
|
64
|
-
- ✅ SSH URLs: `git@github.com:org/repo.git`
|
|
65
|
-
- ✅ GitHub tree URLs: `https://github.com/org/repo/tree/branch/path`
|
|
66
|
-
- ✅ Local file paths: `/path/to/skills` or `~/my-skills`
|
|
67
|
-
|
|
68
|
-
### Repository Aliases
|
|
69
|
-
- ✅ Supports @alias syntax (e.g., `@baici`)
|
|
70
|
-
- ✅ Checks project config first, then global config
|
|
71
|
-
- ✅ Optional path parameter: `@alias path/to/skill`
|
|
72
|
-
- ✅ Helpful error messages when alias not found
|
|
73
|
-
- ✅ Lists all available aliases on error
|
|
74
|
-
|
|
75
|
-
### Installation Flags
|
|
76
|
-
- ✅ `--global` or `-g`: Install to `~/.agents/skills/` (default)
|
|
77
|
-
- ✅ `--project` or `-p`: Install to `.agents/skills/`
|
|
78
|
-
- ✅ Respects config file defaults when no flags provided
|
|
79
|
-
|
|
80
|
-
### Update Behavior
|
|
81
|
-
- ✅ Updates (replaces) existing skills if they already exist
|
|
82
|
-
- ✅ Adds new skills if they don't exist
|
|
83
|
-
- ✅ Handles both single-skill and multi-skill repositories
|
|
84
|
-
- ✅ Reads skill.json to determine skill structure
|
|
85
|
-
|
|
86
|
-
### Error Handling
|
|
87
|
-
- ✅ Validates URLs and paths before processing
|
|
88
|
-
- ✅ Provides helpful error messages with context
|
|
89
|
-
- ✅ Cleans up temporary directories even on errors
|
|
90
|
-
- ✅ Reports individual skill errors while continuing with others
|
|
91
|
-
|
|
92
|
-
## Verification Results
|
|
93
|
-
|
|
94
|
-
All verification tests passed:
|
|
95
|
-
|
|
96
|
-
1. ✅ `superpowers pull` - Displays help text correctly
|
|
97
|
-
2. ✅ `superpowers pull @baici` - Updates 17 skills from SSH repository
|
|
98
|
-
3. ✅ Build succeeds with no errors
|
|
99
|
-
4. ✅ Repository alias resolution works (project first, then global)
|
|
100
|
-
5. ✅ SSH URL support confirmed
|
|
101
|
-
6. ✅ Temporary directory cleanup verified
|
|
102
|
-
7. ✅ Output messages match expected format ("Updating" vs "Installing")
|
|
103
|
-
|
|
104
|
-
## Example Usage
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Update from repository alias
|
|
108
|
-
$ superpowers pull @baici
|
|
109
|
-
Updating skill(s)...
|
|
110
|
-
Using global repository alias: @baici
|
|
111
|
-
Repository URL: git@github.com:BlueAcornInc/skills.git
|
|
112
|
-
Install location: /Users/greg/.agents/skills
|
|
113
|
-
Cloning repository: git@github.com:BlueAcornInc/skills.git
|
|
114
|
-
Found 17 skill(s) to update
|
|
115
|
-
**Successfully updated skills:**
|
|
116
|
-
- Source: git@github.com:BlueAcornInc/skills.git
|
|
117
|
-
- Updated: aem/authoring-analysis at /Users/greg/.agents/skills/aem/authoring-analysis
|
|
118
|
-
...
|
|
119
|
-
|
|
120
|
-
# Update from HTTPS URL
|
|
121
|
-
$ superpowers pull https://github.com/example/skills.git
|
|
122
|
-
|
|
123
|
-
# Update from SSH URL
|
|
124
|
-
$ superpowers pull git@github.com:example/skills.git
|
|
125
|
-
|
|
126
|
-
# Update specific skill path with project flag
|
|
127
|
-
$ superpowers pull @myrepo path/to/skill --project
|
|
128
|
-
|
|
129
|
-
# Update from local path
|
|
130
|
-
$ superpowers pull ~/my-local-skills --global
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Code Quality
|
|
134
|
-
|
|
135
|
-
- ✅ Reuses all existing helper functions (no duplication)
|
|
136
|
-
- ✅ Follows same patterns as `runAdd()` for consistency
|
|
137
|
-
- ✅ Error handling matches existing command patterns
|
|
138
|
-
- ✅ CLI output style matches other commands
|
|
139
|
-
- ✅ No breaking changes to existing functionality
|
|
140
|
-
- ✅ Maintains backwards compatibility
|
|
141
|
-
|
|
142
|
-
## Build Output
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
> @complexthings/superpowers-agent@6.0.2 build
|
|
146
|
-
> node build.js
|
|
147
|
-
|
|
148
|
-
✅ Build complete!
|
|
149
|
-
Output: /Users/greg/sites/ai/superpowers/.agents/superpowers-agent
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
## Lines of Code
|
|
153
|
-
|
|
154
|
-
- `runPull()` function: ~207 lines
|
|
155
|
-
- CLI changes: 3 lines
|
|
156
|
-
- **Total**: ~210 lines of code added
|
|
157
|
-
|
|
158
|
-
## Technical Notes
|
|
159
|
-
|
|
160
|
-
1. **Update mechanism**: The command achieves "update" behavior by removing and replacing existing skill directories, which is handled automatically by `installSingleSkill()` (line 166-168 in installer.js)
|
|
161
|
-
|
|
162
|
-
2. **Code reuse**: 100% of the Git operations, URL parsing, and installation logic is shared with the existing `add` command
|
|
163
|
-
|
|
164
|
-
3. **Alias resolution**: Uses the same `getRepositories()` function to check project-level repositories before global repositories
|
|
165
|
-
|
|
166
|
-
4. **Temporary cleanup**: Uses the same cleanup logic as `add` to remove cloned repositories after installation
|
|
167
|
-
|
|
168
|
-
## Next Steps (Recommendations)
|
|
169
|
-
|
|
170
|
-
1. Update README.md to document the new `pull` command
|
|
171
|
-
2. Consider adding `--dry-run` flag to preview what would be updated
|
|
172
|
-
3. Consider adding timestamp tracking to show when skills were last updated
|
|
173
|
-
4. Consider adding a `--force` flag to skip confirmation prompts
|
|
174
|
-
5. Add integration tests for the pull command
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
## Task - Add `superpowers-agent add-repository {{GIT_URL}}` Command
|
|
2
|
-
|
|
3
|
-
I want to add a command to the Superpowers agent CLI that allows users to add a skill repository so they can easy install skills from that repository later using alias for the repository. The repository alias should be added to the configuration file located at `~/.agents/config.json` or the project-specific `.agents/config.json` file.
|
|
4
|
-
|
|
5
|
-
### Inputs
|
|
6
|
-
- **Command**: `superpowers-agent add-repository {{GIT_REPOSITORY_URL}}`
|
|
7
|
-
- **Parameters**:
|
|
8
|
-
- `GIT_REPOSITORY_URL`: The URL of the git repository containing repository alias to be added.
|
|
9
|
-
- `--global` (or `-g`) (optional): If provided, the repository alias should be added globally in `~/.agents/skills/`. This would be the default, but may be overriden by the `.agents/config.json` or `~/.agents/config.json` setting for `installLocation`.
|
|
10
|
-
- `--project` (or `-p`) (optional): If provided, the repository alias should be added in the current project's `.agents/skills/` directory. If the project doens't already have a .agents/skills/ directory, it should be created. This would override the default global installation location and the `.agents/config.json` or `~/.agents/config.json` setting for `installLocation`.
|
|
11
|
-
- `--as={{REPOSITORY_ALIAS}}` (optional): If provided, the repository alias should be set to the specified value instead of deriving it from the repository name.
|
|
12
|
-
- **Outputs**:
|
|
13
|
-
- On success, the command should print a confirmation message indicating that the repository alias has been added successfully, where it was added (globally or project-specific), and the alias name and what it is pointing to.
|
|
14
|
-
- On failure, the command should print an error message indicating what went wrong (e.g., invalid URL, unable to clone repository, etc.).
|
|
15
|
-
|
|
16
|
-
1. Clone the repository to ~/.agents/tmp
|
|
17
|
-
2. Read the skill.json file and read the `repository` field (String)
|
|
18
|
-
3. Add the value to the config.json file under `repositories` object with the key as the repository alias and value as the git URL.
|
|
19
|
-
4. Clean up the ~/.agents/tmp directory
|
|
20
|
-
|
|
21
|
-
### Variant with user provided alias
|
|
22
|
-
- If the user provides the `--as={{REPOSITORY_ALIAS}}` parameter, use that value as the key in the `repositories` object instead of deriving it from the repository name.
|
|
23
|
-
- **Command**: `superpowers-agent add-repository {{GIT_REPOSITORY_URL}} --as={{REPOSITORY_ALIAS}}`
|
|
24
|
-
- Functionality: Same as above, but uses the provided alias.
|
|
25
|
-
- Example Usage:
|
|
26
|
-
- Input: `superpowers-agent add-repository https://github.com/examples/skills-repo.git --as=@myskills`
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
### Config.json Structure Example
|
|
30
|
-
|
|
31
|
-
```json
|
|
32
|
-
{
|
|
33
|
-
"installLocation": "global",
|
|
34
|
-
"repositories": {
|
|
35
|
-
"@examples": "https://github.com/examples/examples-multi-repo.git",
|
|
36
|
-
"@myskills": "https://github.com/myskills/skills-repo.git",
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### `superpowers-agent add` With Alias Updates
|
|
42
|
-
- **Command**: `superpowers-agent add [options] {{REPOSITORY_ALIAS}} {{SKILLS_PATH}}`
|
|
43
|
-
- **Functionality**: When a user runs this command with a GIT REPOSITORY, the agent should:
|
|
44
|
-
- 1. Clone the repository into a temporary location in ~/.agents/tmp
|
|
45
|
-
1. Move to the directory path specified in the {{SKILLS_PATH}} within the cloned repository.
|
|
46
|
-
2. Read the skill.json file from the cloned repository to get skill data.
|
|
47
|
-
3. Read the `skills` array in skill.json (if present) to determine if there are multiple skills to install.
|
|
48
|
-
4. For each skill (or single skill if no `skills` array):
|
|
49
|
-
1. Read the individual skill.json file to get the skill's `name`.
|
|
50
|
-
2. Move the skill(s) to the appropriate skills directory:
|
|
51
|
-
3. - If `--global` is specified (or default), move to `~/.agents/skills/`
|
|
52
|
-
- If `--project` is specified, move to `.agents/skills/` in the current project directory.
|
|
53
|
-
5. Clean up the temporary cloned repository.
|
|
54
|
-
6. Return a success message listing the installed skills and their installation paths.
|
|
55
|
-
- **Example Usage**:
|
|
56
|
-
- Input:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
superpowers-agent add-repository https://github.com/examples/skills-repo.git && \
|
|
60
|
-
superpowers-agent add @examples tests
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
- Output:
|
|
64
|
-
```markdown
|
|
65
|
-
**Successfully installed skills:**
|
|
66
|
-
- Source: @examples
|
|
67
|
-
- Installed: tests/skill-one at ~/.agents/skills/tests/skill-five
|
|
68
|
-
Testing Skill Five
|
|
69
|
-
```
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Task
|
|
2
|
-
|
|
3
|
-
### Requirements
|
|
4
|
-
|
|
5
|
-
- [ ] I want you to remove the code that causes the additions/updates to ~/.github/copilot-instructions.md when `superpowers-agent bootstrap` and `superpowers-agent update` commands are run. The code is in `./.agents` folder, along with it's build tools, package.json, and src (`./.agents/src`).
|
|
6
|
-
- [ ] Instead I want an addition when the `superpowers-agent setup-skills` command is run, it should update the ./.github/copilot-instructions.md file of the project that it is run in when GitHub Copilot is detected following the same detection patterns already established in the `superpowers-agent setup-skills` command.
|
|
7
|
-
- [ ] The update to the ./.github/copilot-instructions.md file should be the same content that is currently being added to the ~/.github/copilot-instructions.md file, but it should be added to the ./.github/copilot-instructions.md file instead, and it should be added in a way that does not cause duplicates if the `superpowers-agent setup-skills` command is run multiple times in the same project where it makes a backup of the existing file and amends our connent to the end if the `<!-- SUPERPOWERS_-_INSTRUCTIONS_START -->` and `<!-- SUPERPOWERS_-_INSTRUCTIONS_END -->` markers ARE NOT already present, and if those markers are present, it should replace the content between those markers, making sure not to duplicate the markers themselves.
|
|
8
|
-
- [ ] Update the `.agents/package.json` file to `7.0.1` and tag the git release `7.0.1` and push the tag and main branch to origin when you are done with the updates.
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Post-Migration Fixes — Round Three
|
|
2
|
-
|
|
3
|
-
You are working in an agentic coding environment with access to file system tools, web fetching, subagents, and skills.
|
|
4
|
-
|
|
5
|
-
## Objective
|
|
6
|
-
|
|
7
|
-
Fix the double `.git` suffix bug in the `add` command's repository cloning logic.
|
|
8
|
-
|
|
9
|
-
**TARGET_VERSION: 8.2.2**
|
|
10
|
-
|
|
11
|
-
## Problem
|
|
12
|
-
|
|
13
|
-
When a repository URL already ends in `.git`, the clone step appends `.git` again, producing an invalid URL:
|
|
14
|
-
```
|
|
15
|
-
Input: https://github.com/BlueAcornInc/skills.git
|
|
16
|
-
Cloned: https://github.com/BlueAcornInc/skills.git.git ← broken
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
This breaks `superpowers-agent add @baici` after `superpowers-agent add-repository` registers a `.git`-suffixed URL.
|
|
20
|
-
|
|
21
|
-
## Phase 1 — Discover
|
|
22
|
-
|
|
23
|
-
Before writing or modifying anything:
|
|
24
|
-
|
|
25
|
-
1. Read `~/.agents/config.json` — understand how repository URLs and aliases are stored. Note if a previously registered repo with the bad URL is already present (this will interfere with testing).
|
|
26
|
-
2. Read the `add-repository` command implementation — understand how it stores the repository URL.
|
|
27
|
-
3. Read the `add` command implementation — trace the full path from alias resolution → URL construction → `git clone` invocation. Identify exactly where `.git` is appended.
|
|
28
|
-
4. Check for any other commands that construct Git clone URLs — the same bug may exist elsewhere.
|
|
29
|
-
|
|
30
|
-
## Phase 2 — Fix
|
|
31
|
-
|
|
32
|
-
1. Fix the URL construction so it does not append `.git` if the URL already ends with `.git`.
|
|
33
|
-
2. Apply the same fix to any other code paths identified in Phase 1 that construct clone URLs.
|
|
34
|
-
3. Ensure URLs without `.git` suffix still work correctly (both forms are valid Git URLs).
|
|
35
|
-
|
|
36
|
-
## Phase 3 — Verify
|
|
37
|
-
|
|
38
|
-
1. Before testing, check `~/.agents/config.json` for any stale or malformed repository entries from previous failed attempts. Remove them if present so they don't interfere with validation.
|
|
39
|
-
2. Confirm the clone URL is correct for inputs both with and without `.git` suffix.
|
|
40
|
-
3. Search the codebase for any other instances of `.git` suffix appending that could produce the same bug.
|
|
41
|
-
4. Set version to `8.2.2` in both `./package.json` and `.agents/package.json`.
|
|
42
|
-
|
|
43
|
-
## Known Testing Gotcha
|
|
44
|
-
|
|
45
|
-
`~/.agents/config.json` persists previously registered repositories. If a repo was added before this fix, the stored URL may already contain the double `.git`. Clear the relevant entry from `~/.agents/config.json` before re-testing `add-repository` and `add` commands.
|
|
46
|
-
|
|
47
|
-
## Completion Criteria
|
|
48
|
-
|
|
49
|
-
- Repository URLs ending in `.git` are not double-suffixed during clone
|
|
50
|
-
- Repository URLs without `.git` continue to work correctly
|
|
51
|
-
- No other code paths in the codebase have the same double-suffix bug
|
|
52
|
-
- Both `./package.json` and `.agents/package.json` set to version `8.2.2`
|
|
53
|
-
- No regressions in existing CLI functionality
|
|
54
|
-
|
|
55
|
-
## Agent Instructions
|
|
56
|
-
|
|
57
|
-
- Spawn parallel subagents where tasks are independent; each subagent owns a single concern
|
|
58
|
-
- Use Claude Sonnet 4.6 model for subagents
|
|
59
|
-
- USE `leveraging-cli-tools` skill — use `rg`, `fd`, `jq`, `bat`, `ast-grep` over standard tools
|
|
60
|
-
- Reason from facts only — read actual files before writing or modifying anything
|
|
61
|
-
- Do not guess file contents, dependency structures, or platform behaviors — verify first
|
|
62
|
-
- Concise output only; no padding
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Post-Migration Fixes: Update Checking, Version Source, Husky Hook, and Docs
|
|
2
|
-
|
|
3
|
-
You are working in an agentic coding environment with access to file system tools, web fetching, subagents, and skills.
|
|
4
|
-
|
|
5
|
-
## Objective
|
|
6
|
-
|
|
7
|
-
TARGET_VERSION: **8.2.1**.
|
|
8
|
-
|
|
9
|
-
FIX the following issues:
|
|
10
|
-
|
|
11
|
-
I installed the new version and noticed some issues that need to be fixed:
|
|
12
|
-
|
|
13
|
-
1. Version Checking is broken:
|
|
14
|
-
- `superpowers-agent version` returns `0.0.0`
|
|
15
|
-
2. `superpowers-agent bootstrap` command is broken:
|
|
16
|
-
- Running `superpowers-agent bootstrap` is broken because most things look for `~/.agents/superpowers` directory which doesn't exist anymore since it's now installed as an npm package and not as a shell script that puts it in `~/.agents/superpowers`
|
|
17
|
-
3. `superpowers-agent update` command is broken:
|
|
18
|
-
- Running `superpowers-agent update` is also broken for the same reason as above, it looks for the old directory structure that doesn't exist anymore. It should run the new update process `npm install -g @complexthings/superpowers-agent` instead to update the global npm package, after checking the npm registry for the latest version and comparing it to the current version to see if an update is actually needed before running the install command.
|
|
19
|
-
4. `superpowers-agent check-updates` command is broken:
|
|
20
|
-
- It returns `0.0.0` for current version
|
|
21
|
-
|
|
22
|
-
## Completion Criteria
|
|
23
|
-
|
|
24
|
-
- Both `package.json` (`./package.json` & `.agents/package.json`) files set to version `<TARGET_VERSION>`
|
|
25
|
-
- No regressions in existing CLI functionality
|
|
26
|
-
|
|
27
|
-
## Agent Instructions
|
|
28
|
-
|
|
29
|
-
- Spawn parallel subagents where tasks are independent; each subagent owns a single concern
|
|
30
|
-
- Use Claude Sonnet 4.6 model for subagents
|
|
31
|
-
- Phase 2 and Phase 3 are independent — run in parallel
|
|
32
|
-
- Phase 4 depends on Phase 1 discovery but is independent of Phases 2–3
|
|
33
|
-
- Phase 5 depends on Phases 2–4 completing (needs final change list)
|
|
34
|
-
- USE `leveraging-cli-tools` skill — use `rg`, `fd`, `jq`, `bat`, `ast-grep` over standard tools
|
|
35
|
-
- Reason from facts only — read actual files before writing or modifying anything
|
|
36
|
-
- Do not guess file contents, dependency structures, or platform behaviors — verify first
|
|
37
|
-
- Concise output only; no padding
|