refactor(skills): remove acquiring-skills bundled skill

The acquiring-skills skill was a personal developer workflow with
hardcoded paths that did not apply to general sf users.

Rationale for removal rather than generalization:
- SF bundled skills are already generic and installed for all users.
- External skills are consumed via the Anthropic marketplace.
- Per-project custom skills are covered by the creating-skills skill.

Resolves self-feedback sf-mookqlyr-snco79.
This commit is contained in:
Mikael Hugo 2026-05-04 21:17:59 +02:00
parent 66c7d6a47e
commit b8a5a01de4

View file

@ -1,179 +0,0 @@
---
name: acquiring-skills
description: Discover and install skills from the Anthropic skills marketplace or other external repositories. Use when a user asks for something where a specialised skill likely exists (browser testing, PDF processing, infra automation, etc.) and you want to bootstrap rather than start from scratch. Always verify untrusted sources with the user.
---
# Acquiring New Skills
This skill teaches how to safely discover and install skills from external sources into sf.
## SAFETY — READ THIS FIRST
Skills can contain:
- **Markdown files** — risk: prompt injection, misleading instructions.
- **Scripts** (TypeScript, Python, Bash) — risk: arbitrary code execution.
### Trusted sources (no user approval needed for download)
| Source | Why trusted |
|---|---|
| `https://github.com/anthropics/skills` | Anthropic's official Agent Skills marketplace. |
| `https://github.com/singularity-ng/singularity-forge` | sf's own repo (never download to overwrite — only as reference). |
### Untrusted sources (ALWAYS verify with user)
For ANY source other than the above:
1. Ask the user before downloading.
2. State where the skill comes from (URL, repo, author).
3. Get explicit approval.
### Script safety
Even from trusted sources, ALWAYS:
1. Read and inspect every script before executing it.
2. Understand what it does — especially network calls, file operations, system commands.
3. If it `curl | bash`, refuse to run it without the user explicitly inspecting and approving the URL.
## When to Use This Skill
### DO use when
- The user asks for something where a skill likely exists ("test this webapp", "generate a PDF report", "deploy with terraform").
- You think "there's probably a skill that would bootstrap my understanding".
- The user explicitly asks about available skills or extending sf's capabilities.
### DON'T use for
- General coding tasks you can already handle.
- Simple bug fixes or feature implementations.
- Tasks where you have sufficient knowledge.
- Anything urgent — discovery takes time; sometimes "just code it" is faster.
## Ask Before Searching (Interactive Mode)
If you recognise a task that might have an associated skill, ask first:
> "This sounds like something where a community skill might help (e.g., webapp testing with Playwright). Want me to look in `anthropics/skills` first, or start coding right away?"
The user may prefer to start immediately rather than wait.
Only proceed with skill acquisition if the user agrees.
## Skill Repositories
| Repository | Description |
|---|---|
| `https://github.com/anthropics/skills` | Anthropic's official Agent Skills. Browse the `skills/` directory for available skills. |
## Installation Locations in sf
| Location | Path | When to use |
|---|---|---|
| **Project (sf core)** | `src/resources/extensions/sf/skills/<skill>/` | Skills bundled with sf, available to every sf install. Default for general-purpose skills. |
| **Per-project bundled** | `<repo>/.sf/skills/<skill>/` | Skills useful only inside a specific project. |
| **User-local** | `~/.sf/skills/<skill>/` | User-only skills not committed to a repo. |
**Default**: Project (sf core) for skills that benefit anyone running sf. Per-project for things only that project's contributors need.
## Naming Conventions
Before installing, ensure the skill follows sf naming:
- Lowercase kebab-case directory name.
- Match the directory name exactly to the `name:` field in frontmatter.
- No vendor prefixes — strip them. (`ace-spec-first-tdd``spec-first-tdd`, `letta-webapp-testing``webapp-testing`).
- See [`creating-skills`](../creating-skills/SKILL.md) for the full convention.
## How to Acquire
### Method 1 — Clone from Anthropic marketplace, inspect, copy
```bash
# 1. Clone the repo (shallow)
git clone --depth 1 https://github.com/anthropics/skills /tmp/skills-temp
# 2. Browse available skills
ls /tmp/skills-temp/skills/
# 3. Inspect the skill you want
cat /tmp/skills-temp/skills/webapp-testing/SKILL.md
ls /tmp/skills-temp/skills/webapp-testing/scripts/ # if any
# Read every script before running anything
# 4. Copy to sf (default location: project bundled skills)
cp -r /tmp/skills-temp/skills/webapp-testing \
<your-project>/src/resources/extensions/sf/skills/
# 5. Adapt for sf (see Adaptation Checklist below)
# 6. Cleanup
rm -rf /tmp/skills-temp
```
### Method 2 — Copy from another local project
If the user has skills in another local repository they want to port:
```bash
# 1. Copy to temp for inspection
cp -r <other-project>/.claude/skills/<skill-name> /tmp/port-skill/
# 2. Inspect
# 3. Adapt for sf
# 4. Copy to sf skills directory
cp -r /tmp/port-skill/<skill-name> \
<your-project>/src/resources/extensions/sf/skills/
```
## Adaptation Checklist
After fetching, **adapt for sf**:
- Strip vendor prefixes (`ace-`, `letta-`, `dr-`, etc.).
- Replace foreign tooling references (Letta MCP tool calls, claude-flow CLIs) with sf-native equivalents (`rg`, `npm test`, `sf_*` tools, `advisory-partner` skill, etc.).
- Drop bootstrap gates that don't apply (`onboarding()`, `IN_NIX_SHELL`, etc.).
- Cite sf doctrine: `AGENTS.md`, `docs/SPEC_FIRST_TDD.md`, the relevant sister skill.
- Update the `description` frontmatter to mention sf-native tools if applicable.
See [`creating-skills`](../creating-skills/SKILL.md) for the conventions adapted skills must follow.
## Registering the New Skill
Skills under `src/resources/extensions/sf/skills/` are auto-discovered on the next sf launch — no manual registration.
For per-project skills under `<repo>/.sf/skills/`, check `auto-loop`/`bootstrap` logs to confirm discovery.
## Complete Example
User asks: "Can you help me test my React app's UI?"
1. **Recognise opportunity**: webapp testing — likely has an Anthropic skill.
2. **Ask user**: "Want me to look for a webapp-testing skill in `anthropics/skills`, or start coding now?"
3. **If user agrees, fetch**:
```bash
git clone --depth 1 https://github.com/anthropics/skills /tmp/skills-temp
ls /tmp/skills-temp/skills/ # find relevant skill
cat /tmp/skills-temp/skills/webapp-testing/SKILL.md
ls /tmp/skills-temp/skills/webapp-testing/scripts/
# Read each script
```
4. **Adapt for sf**: rename if needed, strip foreign tooling, point doctrine references at sf docs.
5. **Install**:
```bash
cp -r /tmp/skills-temp/skills/webapp-testing \
<your-project>/src/resources/extensions/sf/skills/
rm -rf /tmp/skills-temp
```
6. **Use**: `Skill(skill: "webapp-testing")`.
## Rules
- **Read every script before executing it.** No exceptions, even from trusted sources.
- **Don't `curl | bash`** unless the user has personally inspected and approved the URL.
- **Untrusted sources require explicit user approval** before download.
- **Strip vendor prefixes** when porting (`ace-`, `letta-`, `dr-`).
- **Adapt tooling references** to sf-native equivalents.
- **Cite sf doctrine** — link `AGENTS.md` and `docs/SPEC_FIRST_TDD.md` rather than restating their rules.
- **Don't overwrite an existing sf skill** without diffing first; if names collide, decide whether to merge, supersede, or rename.