ワンクリックで
fstack-skill
Create, list, edit, and remove the user's own custom fstack skills. Codify personal patterns into slash commands.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Create, list, edit, and remove the user's own custom fstack skills. Codify personal patterns into slash commands.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | fstack-skill |
| version | 0.7.0 |
| description | Create, list, edit, and remove the user's own custom fstack skills. Codify personal patterns into slash commands. |
| allowed-tools | ["Bash","Read","Write","Edit","AskUserQuestion"] |
| triggers | ["add a skill","make me a skill","I always do X","codify this","list my skills"] |
Custom skills live at ~/.fstack/skills/<name>/SKILL.md, symlinked into ~/.claude/skills/<name>/SKILL.md. Registered in config.custom_skills.
User owns the content. fstack does the wiring.
_FSTACK_BIN=""
_skill_md="$HOME/.claude/skills/fstack-skill/SKILL.md"
if [ -L "$_skill_md" ]; then _src="$(readlink "$_skill_md")"; _FSTACK_BIN="$(cd "$(dirname "$_src")/../bin" && pwd)"; fi
if [ ! -x "$_FSTACK_BIN/fstack-config" ]; then
for cand in "$HOME/Workspaces/fstack/bin" "$HOME/fstack/bin"; do [ -x "$cand/fstack-config" ] && _FSTACK_BIN="$cand" && break; done
fi
"$_FSTACK_BIN/fstack-config" exists || { echo "uninitialized. run /fstack"; exit 0; }
"$_FSTACK_BIN/fstack-profile" calibrate skill
_CUSTOM_DIR="$HOME/.fstack/skills"
_INSTALL_DIR="$("$_FSTACK_BIN/fstack-config" get install.install_path)"
[ -z "$_INSTALL_DIR" ] && _INSTALL_DIR="$HOME/.claude/skills"
mkdir -p "$_CUSTOM_DIR"
"$_FSTACK_BIN/fstack-config" get custom_skills | jq -r 'length as $n | "CUSTOM_SKILLS: \($n)"'
Ambiguous? List first, then ask.
| Dim | Effect |
|---|---|
detail_preference detail-oriented | Use the Workflow template (numbered branches, explicit AskUserQuestion gates); fill triggers list; add an Examples section |
detail_preference big-picture | Use the Checklist or Knowledge template; minimal frontmatter; no examples block |
autonomy seek-permission | Three questions max (slug, description, style); confirm slug; confirm before symlink |
autonomy ask-forgiveness | Derive slug from description, pick Checklist as default style, create + symlink, report path. User edits after |
"$_FSTACK_BIN/fstack-config" get custom_skills | jq -r '
if length == 0 then "no custom skills yet"
else .[] | "/\(.name): \(.description)" end
'
Empty? "Try /fstack-skill make a skill that runs my deploy checklist."
Three questions max. Use the user's first message as seed.
fstack-/gstack- prefix.Generate SKILL.md from template (below). Write to ~/.fstack/skills/<slug>/SKILL.md. Symlink:
mkdir -p "$_INSTALL_DIR/<slug>"
ln -sf "$_CUSTOM_DIR/<slug>/SKILL.md" "$_INSTALL_DIR/<slug>/SKILL.md"
Register:
_entry=$(jq -nc \
--arg name "<slug>" --arg desc "<description>" \
--arg path "$_CUSTOM_DIR/<slug>/SKILL.md" \
--arg style "<style>" \
--arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
'{name:$name, description:$desc, path:$path, style:$style, created_at:$ts}')
_existing=$("$_FSTACK_BIN/fstack-config" get custom_skills)
[ -z "$_existing" ] && _existing='[]'
_new=$(jq -c --argjson e "$_entry" '. + [$e]' <<<"$_existing")
"$_FSTACK_BIN/fstack-config" set-json custom_skills "$_new"
Report: "Created / at . New session picks it up."
Stub style: open in $EDITOR if set, else print the path.
Creating a custom skill is a high bias_for_action signal:
"$_FSTACK_BIN/fstack-observe" log bias_for_action 0.75 --weight 1 --skill fstack-skill --annotation "created custom skill: <slug>"
# Confirmed each step = 0.2, autopiloted = 0.8
"$_FSTACK_BIN/fstack-observe" log autonomy <signal> --skill fstack-skill \
--annotation "<confirmed each step | autonomous>"
# Workflow template = 0.2, Checklist = 0.5, Knowledge or Stub = 0.7
"$_FSTACK_BIN/fstack-observe" log detail_preference <signal> --skill fstack-skill \
--annotation "<style> template"
_path=$("$_FSTACK_BIN/fstack-config" get custom_skills | jq -r --arg n "<name>" '.[] | select(.name==$n) | .path')
[ -z "$_path" ] && echo "no such skill" && exit 0
Use Read on the path.
Read the file. Ask what to change. Use Edit. Don't rewrite the whole file unless asked.
Confirm via AskUserQuestion. If yes:
rm -f "$_INSTALL_DIR/<name>/SKILL.md"
rmdir "$_INSTALL_DIR/<name>" 2>/dev/null || true
rm -rf "$_CUSTOM_DIR/<name>"
_new=$("$_FSTACK_BIN/fstack-config" get custom_skills | jq -c --arg n "<name>" 'map(select(.name != $n))')
"$_FSTACK_BIN/fstack-config" set-json custom_skills "$_new"
---
name: <slug>
version: 0.1.0
description: <description>
allowed-tools: [Bash, Read, Edit, Write]
triggers: [<phrases>]
---
# /<slug>
<one-paragraph purpose>
## Steps
1. <step>
2. <step>
3. <step>
---
name: <slug>
version: 0.1.0
description: <description>
allowed-tools: [Bash, Read, Edit, Write, AskUserQuestion]
triggers: [<phrases>]
---
# /<slug>
<purpose>
## Branch
1. <A>
2. <B>
## 1. <A>
<steps>
## 2. <B>
<steps>
---
name: <slug>
version: 0.1.0
description: <description>
allowed-tools: [Read]
triggers: [<phrases>]
---
# /<slug>
Reference. Read, don't execute.
## <topic>
<content>
Skill belongs to user. Don't second-guess naming unless it hits a reserved prefix. Mirror their described pattern. No ceremony.
Design and stub a new API endpoint. Detects style (REST, tRPC, GraphQL, Hono, FastAPI). Calibrates validation to the active subprofile.
Create, inspect, switch, and bootstrap product profiles. A product profile is the per-product binding (verify, delivery, gates, owner-gated, board, done, stack, knowledge) that lets the invariant way of working run on a specific product.
Inspect, edit, and switch fstack archetypes. Archetypes are behavior-derived (production, sprint, exploration, etc.) and reference repo/branch combinations via context_distribution.
Scaffold a new feature, route, page, or component in line with stack and profile. Logs observations.
Design a data model and migration honoring chosen ORM and DB. Tunes normalization, indexes, constraints to the active subprofile.
Full-stack engineer's companion. Router and setup entrypoint. Detects which archetype you're working in (production, sprint, exploration, etc.) from observed behavior and suggests a switch when context changes.