Final rebrand: rename remaining Rust source file to complete the gsd → forge transition. All parser references already use forge_parser after earlier commits. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
7.4 KiB
Skills
Skills are specialized instruction sets that SF loads when the task matches. They provide domain-specific guidance for the LLM — coding patterns, framework idioms, testing strategies, and tool usage.
Skills follow the open Agent Skills standard and are not SF-specific — they work with Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Windsurf, and 40+ other agents.
Skill Directories
SF reads skills from two locations, in priority order:
| Location | Scope | Description |
|---|---|---|
~/.agents/skills/ |
Global | Shared across all projects and all compatible agents |
.agents/skills/ (project root) |
Project | Project-specific skills, committable to version control |
Global skills take precedence over project skills when names collide.
Migration from
~/.sf/agent/skills/: On first launch after upgrading, SF automatically copies skills from the legacy~/.sf/agent/skills/directory to~/.agents/skills/. The old directory is preserved for backward compatibility.
Installing Skills
Skills are installed via the skills.sh CLI:
# Interactive — choose skills and target agents
npx skills add dpearson2699/swift-ios-skills
# Install specific skills non-interactively
npx skills add dpearson2699/swift-ios-skills --skill swift-concurrency --skill swiftui-patterns -y
# Install all skills from a repo
npx skills add dpearson2699/swift-ios-skills --all
# Check for updates
npx skills check
# Update installed skills
npx skills update
Onboarding Catalog
During sf init, SF detects the project's tech stack and recommends relevant skill packs. For brownfield projects, detection is automatic; for greenfield projects, the user picks a tech stack.
The curated catalog is maintained in src/resources/extensions/sf/skill-catalog.ts. Each entry maps a tech stack to a skills.sh repo and specific skill names.
Available Skill Packs
Swift (any Swift project — Package.swift or .xcodeproj detected):
- SwiftUI — layout, navigation, animations, gestures, Liquid Glass
- Swift Core — Swift language, concurrency, Codable, Charts, Testing, SwiftData
iOS (only when .xcodeproj targets iphoneos via SDKROOT):
- iOS App Frameworks — App Intents, Widgets, StoreKit, MapKit, Live Activities
- iOS Data Frameworks — CloudKit, HealthKit, MusicKit, WeatherKit, Contacts
- iOS AI & ML — Core ML, Vision, on-device AI, speech recognition
- iOS Engineering — networking, security, accessibility, localization, Instruments
- iOS Hardware — Bluetooth, CoreMotion, NFC, PencilKit, RealityKit
- iOS Platform — CallKit, EnergyKit, HomeKit, SharePlay, PermissionKit
Web:
- React & Web Frontend — React best practices, web design, composition patterns
- React Native — cross-platform mobile patterns
- Frontend Design & UX — frontend design, accessibility
Languages:
- Rust — Rust patterns and best practices
- Python — Python patterns and best practices
- Go — Go patterns and best practices
General:
- Document Handling — PDF, DOCX, XLSX, PPTX creation and manipulation
Maintaining the Catalog
The skill catalog lives in src/resources/extensions/sf/skill-catalog.ts. To add or update a pack:
- Add a
SkillPackentry to theSKILL_CATALOGarray withrepo,skills, and matching criteria - For language-detection matching, use
matchLanguages(values fromdetection.tsLANGUAGE_MAP) - For Xcode platform matching, use
matchXcodePlatforms(e.g.,["iphoneos"]— parsed fromSDKROOTinproject.pbxproj) - For file-presence matching, use
matchFiles(checked againstPROJECT_FILESindetection.ts) - If the pack should appear in greenfield choices, add it to
GREENFIELD_STACKS - Packs sharing the same
repoare batched into a singlenpx skills addinvocation
Skill Discovery
The skill_discovery preference controls how SF finds skills during auto mode:
| Mode | Behavior |
|---|---|
auto |
Skills are found and applied automatically |
suggest |
Skills are identified but require confirmation (default) |
off |
No skill discovery |
Skill Preferences
Control which skills are used via preferences:
---
version: 1
always_use_skills:
- debug-like-expert
prefer_skills:
- frontend-design
avoid_skills:
- security-docker
skill_rules:
- when: task involves Clerk authentication
use: [clerk]
- when: frontend styling work
prefer: [frontend-design]
---
Resolution Order
Skills can be referenced by:
- Bare name — e.g.,
frontend-design→ scans~/.agents/skills/and project.agents/skills/ - Absolute path — e.g.,
/Users/you/.agents/skills/my-skill/SKILL.md - Directory path — e.g.,
~/custom-skills/my-skill→ looks forSKILL.mdinside
Global skills (~/.agents/skills/) take precedence over project skills (.agents/skills/).
Custom Skills
Create your own skills by adding a directory with a SKILL.md file:
~/.agents/skills/my-skill/
SKILL.md — instructions for the LLM
references/ — optional reference files
The SKILL.md file contains instructions the LLM follows when the skill is active. Reference files can be loaded by the skill instructions as needed.
Project-Local Skills
Place skills in your project for project-specific guidance:
.agents/skills/my-project-skill/
SKILL.md
Project-local skills can be committed to version control so team members share the same skill set.
Skill Lifecycle Management
SF tracks skill performance across auto-mode sessions and surfaces health data to help you maintain skill quality.
Skill Telemetry
Every auto-mode unit records which skills were available and actively loaded. This data is stored in metrics.json alongside existing token and cost tracking.
Skill Health Dashboard
View skill performance with /sf skill-health:
/sf skill-health # overview table: name, uses, success%, tokens, trend, last used
/sf skill-health rust-core # detailed view for one skill
/sf skill-health --stale 30 # skills unused for 30+ days
/sf skill-health --declining # skills with falling success rates
The dashboard flags skills that may need attention:
- Success rate below 70% over the last 10 uses
- Token usage rising 20%+ compared to the previous window
- Stale skills unused beyond the configured threshold
Staleness Detection
Skills unused for a configurable number of days are flagged as stale and can be automatically deprioritized:
---
skill_staleness_days: 60 # default: 60, set to 0 to disable
---
Stale skills are excluded from automatic matching but remain invokable explicitly via read.
Heal-Skill (Post-Unit Analysis)
When configured as a post-unit hook, SF can analyze whether the agent deviated from a skill's instructions during execution. If significant drift is detected (outdated API patterns, incorrect guidance), it writes proposed fixes to .sf/skill-review-queue.md for human review.
Key design principle: skills are never auto-modified. Research shows curated skills outperform auto-generated ones significantly, so the human review step is critical.