Resources
18Install
npx skillscat add deftai/directive Install via the SkillsCat registry.
name: deft
description: Apply deft framework standards for AI-assisted development. Use when starting projects, writing code, running tests, making commits, or when the user references deft, project standards, or coding guidelines.
user-invocable: false
metadata:
clawdbot:
requires:
bins: ["task"]
homepage: "https://github.com/deftai/directive"
os: ["darwin", "linux", "windows"]
Deft Framework
A layered framework for AI-assisted development with consistent standards and workflows.
When This Skill Activates
This skill automatically loads when you:
- Start work in a deft-enabled project (has
.deft/core/directory) - Reference deft, project standards, or coding conventions
- Run tests, make commits, or perform quality checks
- Ask about project structure, workflows, or best practices
Missing Config Auto-Setup
! When this skill activates, check for USER.md at the platform-appropriate path
(Windows: %APPDATA%\deft\USER.md, Unix: ~/.config/deft/USER.md, or $DEFT_USER_PATH).
If USER.md is missing: Skip everything else in this file. Ask this question immediately
as your FIRST and ONLY response — no summary, no menu, no preamble:
Deft has solid opinions on how code should be written and tested — I just need
a few things about you and your project. First, how deep do you want to go?
- I'm technical — ask me everything
- I have some opinions but keep it simple
- Just pick good defaults — I care about the product, not the tools
Then continue with skills/deft-directive-setup/SKILL.md Phase 1 for remaining questions.
If USER.md exists but ./vbrief/PROJECT-DEFINITION.vbrief.json is missing: Skip toskills/deft-directive-setup/SKILL.md Phase 2.
If USER.md and ./vbrief/PROJECT-DEFINITION.vbrief.json both exist but no scope vBRIEFs in ./vbrief/ lifecycle folders:
Skip to skills/deft-directive-setup/SKILL.md Phase 3. Start the specification interview
imediately — ask what to build and features as the first question.
⊗ Project Root vs Framework Internals
! When checking for project-level files (PROJECT-DEFINITION.vbrief.json, scope vBRIEFs,PRD.md), ONLY look at ./vbrief/ and its lifecycle subdirectories.
!
./vbrief/PROJECT-DEFINITION.vbrief.json— the user's project config!
./vbrief/proposed/,./vbrief/pending/,./vbrief/active/,./vbrief/completed/— scope vBRIEFs in lifecycle folders⊗ Count ANY file inside
.deft/core/(canonical) or./deft/(legacy pre-v0.27) as a project-level artifact — those are
framework-internal (e.g..deft/core/PROJECT.md,.deft/core/specs/,.deft/core/templates/
are all part of the framework, NOT the user's project)⊗ Present a summary of the config and ask what the user wants to do
⊗ Ask "what would you like to do" or "what are we building" — start the interview directly
⊗ Show menus, recaps, or workflow overviews before starting the next missing phase
Core Principle: Rule Precedence
Deft uses hierarchical rules where more specific overrides general.
USER.md has two sections with different precedence:
USER.md Personal ← HIGHEST (name, custom rules — always wins)
↓
PROJECT-DEFINITION.vbrief.json ← Project-specific (strategy, coverage, languages, tech stack)
↓
USER.md Defaults ← Fallback defaults (used when PROJECT-DEFINITION doesn't specify)
↓
{language}.md ← Language standards (python.md, go.md, typescript.md, cpp.md)
↓
{tool}.md ← Tool guidelines (taskfile.md, git.md)
↓
main.md ← General AI behavior
↓
scope vBRIEFs ← LOWEST precedence (requirements in lifecycle folders)IMPORTANT: USER.md Personal section always wins. For project-scoped settings
(strategy, coverage, languages), PROJECT-DEFINITION.vbrief.json overrides USER.md Defaults.
File Reading Strategy (Lazy Loading)
DO NOT read all deft files at once. Read only what you need:
- Always start with:
.deft/core/main.md(general guidelines) - Check for:
~/.config/deft/USER.md(personal overrides - highest precedence) - Check for:
./vbrief/PROJECT-DEFINITION.vbrief.json(project-specific rules) - Then read language-specific only if working with that language:
.deft/core/languages/python.md.deft/core/languages/go.md.deft/core/languages/typescript.md.deft/core/languages/cpp.md
- Read tool files only when using that tool:
.deft/core/tools/taskfile.md(when running tasks).deft/core/scm/git.md(when using git).deft/core/scm/github.md(when using GitHub)
Task-Centric Workflow
Deft projects use Taskfile as the universal task runner.
task --list # See all available tasks
task check # CRITICAL: Run before EVERY commitSee .deft/core/tools/taskfile.md for complete task standards and common commands.
Development Methodology
Test-Driven Development (TDD):
- Write test first → Watch it fail → Implement → Refactor → Repeat
- Default: ≥85% coverage (check
project.mdfor overrides) - Implementation is INCOMPLETE until tests pass
Spec-Driven Development (SDD) for new features/projects:
- Run
.deft/core/run spec— sizing gate selects Light or Full path - Light: Interview → scope vBRIEFs in
vbrief/proposed/(embedded requirements) → Implement - Full: Interview → rich narratives in
specification.vbrief.json(approval gate) → scope vBRIEFs → Implement
See .deft/core/coding/testing.md for complete testing standards.
Quality Standards
Before Every Commit:
task check # MUST run: fmt, lint, type check, test, coverageConventional Commits: Use https://www.conventionalcommits.org/en/v1.0.0/ format
File Naming: Use hyphens (e.g., user-service.py), not underscores
Secrets: Store in secrets/ directory with .example templates
See .deft/core/coding/coding.md and .deft/core/scm/git.md for complete standards.
Language-Specific Standards
All languages require ≥85% test coverage. See language-specific files:
.deft/core/languages/python.md.deft/core/languages/go.md.deft/core/languages/typescript.md.deft/core/languages/cpp.md
New Project Setup
Initialize new project:
.deft/core/run init # Create deft structure
.deft/core/run bootstrap # User config (first time only)
.deft/core/run project # Project config → vbrief/PROJECT-DEFINITION.vbrief.json
.deft/core/run spec # Sizing gate → Light (scope vBRIEFs) or Full (specification.vbrief.json → scope vBRIEFs)Work with existing deft project:
- First time? If
~/.config/deft/USER.mddoesn't exist, run.deft/core/run bootstrap - Read
.deft/core/main.md(general guidelines) - Read
~/.config/deft/USER.md(personal preferences - highest precedence) - Read
./vbrief/PROJECT-DEFINITION.vbrief.json(project rules) - Run
task --listto see available tasks
See .deft/core/main.md for complete workflow details.
Self-Improvement
Deft learns and evolves via meta/ directory:
lessons.md- Patterns learned (AI can update)ideas.md- Future improvementssuggestions.md- Project-specific suggestions
Platform Integration
This SKILL.md follows the AgentSkills specification, compatible with:
- Claude Code:
~/.claude/skills/deft/or.claude/skills/deft/ - clawd.bot:
~/.clawdbot/skills/deft/or install viaclawdhub sync deft - Warp AI: Upload to Warp Drive, reference in
WARP.md/AGENTS.md
See .deft/core/docs/claude-code-integration.md for integration details.
Quick Reference
| Task | Command |
|---|---|
| List tasks | task or task --list |
| Pre-commit checks | task check |
| Run tests | task test |
| Check coverage | task test:coverage |
| Format code | task fmt |
| Lint code | task lint |
| Initialize deft | .deft/core/run init |
| Configure user | .deft/core/run bootstrap |
| Configure project | .deft/core/run project |
| Generate spec | .deft/core/run spec |
Remember
- Lazy load files - Only read what you need
- User.md Personal is king - Personal section always wins; Defaults are fallback
- Task-centric - Use
taskfor everything - Test first - Write tests before implementation
- Always check - Run
task checkbefore commits - Conventional commits - Follow the standard
- Coverage matters - ≥85% by default
- Never lie - Don't claim checks passed without running them
For more details, read the specific files in .deft/core/ as needed. Start with main.md and follow the precedence hierarchy.