DSCC
home / extending / skills

Skills

A skill is a Markdown file with YAML frontmatter. When the model invokes a skill, DSCC injects the Markdown body into the conversation — use skills to package reusable prompts, checklists, and domain knowledge.

Discovery paths

Resolved by discover_skill_roots at crates/commands/src/lib.rs:1306–1391. Legacy commands/ directories are still accepted for backwards compatibility.

# Source Paths
1 Project ancestors .codex/skills/, .dscc/skills/, .codex/commands/ (legacy), .dscc/commands/ (legacy)
2 $CODEX_HOME $CODEX_HOME/skills/, $CODEX_HOME/commands/
3 User home ~/.codex/skills/, ~/.codex/commands/, ~/.dscc/skills/, ~/.dscc/commands/
4 Bundled directory at $DSCC_BUNDLED_SKILLS

File layout

Origin Layout
SkillsDir <root>/<skill-name>/SKILL.md
LegacyCommandsDir either a single .md file, or a directory with SKILL.md inside (tagged SkillOrigin::LegacyCommandsDir)

Schema (Markdown frontmatter)

---
name: my-skill
description: Brief one-line purpose
---

## Instructions
(free-form Markdown that the model receives when the skill is invoked)

Parsed by parse_skill_frontmatter. Both name and description are optional; if name is missing it falls back to the filename stem (or directory name).

Minimal working example

.dscc/skills/commit-msg/SKILL.md:

---
name: commit-msg
description: Write a Conventional Commit message for the current diff
---

## Instructions

1. Run `git diff --staged`.
2. Summarise the change in one line using `type(scope): subject`.
3. Print the message only, no extra commentary.

Invocation

How What it does
/skills (slash) Lists discovered skills
Model calls Skill tool (tools.rs:394–406) Injects the skill’s Markdown into the current context; takes skill: <name> and optional args: <string>

Verify discovery

Run /skills inside DSCC and look for your skill in the list. # [交互] (REPL slash command; the CLI equivalent dscc skills is scriptable and unmarked.)

Skills vs Agents

Aspect Skill Agent
Source Markdown with frontmatter TOML preset
Invocation Skill tool — adds prompt fragment to current conversation Agent tool — spawns a new thread with its own prompt + tool set + model
State Shares the caller’s model and tools Has its own subagent-type tool allowlist
Output Inline response Separate run artifact under .dscc-agents/

Rule of thumb: use a skill to add knowledge or a procedure to the current turn; use an agent when the work should run on its own thread with a different tool allowlist.

See also