Pre-build cost & budget transparency phase. Use after the project SPECIFICATION is approved and before the build skill kicks off, to produce a plain-English COST-ESTIMATE.md the user can read, react to, and explicitly accept, rescope, no-build, or skip with a recorded reason. Audience is non- technical users; voice is dollars and whole-number bands, not spreadsheets.
Install
npx skillscat add deftai/directive/deft-directive-cost Install via the SkillsCat registry.
Deft Directive Cost
Plain-English cost & budget transparency phase between SPECIFICATION
approval and build kickoff. Closes the adoption-blocker surfaced by
issue #739 (and issue #151 umbrella) where users finished the spec
flow and stopped at build because deft offered no cost signal.
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
When to Use
- After
skills/deft-directive-setup/SKILL.mdPhase 3 has produced either greenfield authority (xbrief/PROJECT-DEFINITION.xbrief.jsonplus lifecycle scopes) or an approved full-spec compatibility artifact - Before
skills/deft-directive-build/SKILL.mdkicks off - When the user says "cost", "budget", "pre-build cost", "how much will
this cost", or asks to estimate cost before building
Audience & Voice
- ! Non-technical users. Voice is plain English, dollars, and whole
numbers. No spreadsheets, no scientific notation, no industry jargon. - ! Loose ranges, not single point estimates. Express bands as low /
typical / high. - ⊗ Use jargon like "TCO", "burn rate", "p50", "OPEX vs CAPEX",
"amortised", "blended rate", "unit economics", "FTE", or any other
term a non-technical user is unlikely to know.
Methodology lives in references/cost-models.md. The canonical body of
the artifact lives in templates/COST-ESTIMATE.md.
Platform Detection
! Before resolving any config paths, detect the host OS from your
environment context and resolve the USER.md path:
| Platform | USER.md default path |
|---|---|
| Windows | %APPDATA%\deft\USER.md (e.g. C:\Users\{user}\AppData\Roaming\deft\USER.md) |
| Unix (macOS/Linux) | ~/.config/deft/USER.md |
- ! If
$DEFT_USER_PATHis set, it takes precedence on any platform.
Path resolution mirrors skills/deft-directive-build/SKILL.md so the
two skills agree on the user's preferences file.
Inputs
- ! Resolve the same two-path authority used by
task project:export-spec: prefer an existing full-spec artifact, otherwise usexbrief/PROJECT-DEFINITION.xbrief.jsonplus lifecycle scopes. - ! For full-spec authority, require its existing approval contract. For greenfield authority, require the setup approval decision and at least one lifecycle scope; do not require
plan.status = "approved"on PROJECT-DEFINITION. - ⊗ Require or create
xbrief/specification.xbrief.jsonsolely to estimate a greenfield project. - ~
templates/COST-ESTIMATE.md(canonical artifact body). - ~
references/cost-models.md(methodology).
Phases
Phase 1 -- Read the spec & detect categories
- ! Read the resolved authority: the full-spec artifact when present, otherwise PROJECT-DEFINITION plus relevant lifecycle scopes.
- ! Walk the resolved narratives and scope requirements to identify which cost categories apply for this
project: hosting / infrastructure, API / third-party fees, pre-flight
account sign-ups, build & maintenance time. Drop categories that do
not apply. - ~ State each category's relevance to the user in one sentence (e.g.
"Because the spec says we will use an LLM, the AI / LLM row applies
and is usually the largest swing factor").
Phase 2 -- Draft COST-ESTIMATE.md
- ! Copy
templates/COST-ESTIMATE.mdinto the project root asCOST-ESTIMATE.md. - ! Fill in each category with a low - typical - high plain-English
band. Use whole numbers where the precision does not matter. - ! State the scale assumption beside the typical band (e.g. "About
100 active users per day, each doing 5 main actions"). The same
project shape can be $10 / month or $10,000 / month depending on
traffic, so the assumption is required. - ! Roll up into a monthly band (low / typical / high). Keep the
roll-up loose -- adding a range to a range gives a range; do NOT
collapse to a single number. - ! When the high band is more than ~10x the typical band, surface a
scale considerations note explaining what would push the project
from typical to high (e.g. "media-heavy traffic blows up egress"). - ! USD-only first pass. The artifact MUST say "USD" up top so
international users know to convert. - ⊗ Quote single-point estimates ("this will cost $47.12 / month").
- ⊗ Cite live vendor pricing as if it were a guarantee. The artifact is
a snapshot; vendor pricing changes.
Phase 3 -- Read it back to the user
- ! Show the user the TL;DR, the monthly band (low / typical /
high), and the scale considerations note (if present). - ~ Offer to read any other section in full on request.
- ! Surface the explicit decision point menu in Phase 4.
Phase 4 -- Decision point (build kickoff confirmation menu)
! Present the user with this exact, numbered menu. Per the framework
menu rule (#767), Discuss and Back MUST be the final two numbered
options. The four substantive choices come first.
This is your project's cost estimate. Pick one.
1. Build -- accept the cost and start the build phase
2. Rescope -- keep building but reduce cost first
3. No-build -- stop here; record the reason
4. Skip -- skip the cost phase; record a short reason
5. Discuss -- ask follow-up questions before deciding
6. Back -- return to the previous step (e.g. spec edits)- !
DiscussMUST be option 5 andBackMUST be option 6 (the final
two numbered options) per the #767 framework rule. - ! The decision MUST be recorded in
COST-ESTIMATE.mdunder
Decision recorded (decision, date, recorded-by, reason). The
reason field is REQUIRED forrescope,no-build, andskip(so
that the artifact's existence is auditable). The reason field is
optional forbuild. - ! On
Rescope, return the user to spec edits (chain back toskills/deft-directive-refinement/SKILL.mdto pull spec scope back,
or the interview), then re-run this skill from Phase 1. - ! On
No-build, write the decision toCOST-ESTIMATE.md, mark the
applicable lifecycle scope xBRIEFs accordingly, exit, and do NOT chain into the build
skill. - ! On
Skip, write the decision and skip reason toCOST-ESTIMATE.md
and proceed to the build kickoff. - ! On
Build, write the decision toCOST-ESTIMATE.mdand proceed
to the build kickoff. - ! On
Discuss, take questions and re-show the same menu. Do NOT
proceed without an explicit choice from options 1-4. - ! On
Back, return to the spec / setup phase. Do NOT proceed without
re-running this skill. - ⊗ Proceed to the build skill silently without surfacing the decision
point to the user.
Output Targets
- !
COST-ESTIMATE.md(in the project root). Created by Phase 2 and
finalised in Phase 4 with the recorded decision. - ~ Reference the artifact from
xbrief/PROJECT-DEFINITION.xbrief.json
via areferencesentry of typex-xbrief/spec-sectionso future
agents discover the cost decision when re-reading the project
definition.
Anti-Patterns
- ⊗ Quote single-point cost estimates -- always use loose plain-English
bands. - ⊗ Use industry jargon (TCO, p50, FTE, OPEX vs CAPEX, etc.) in the
artifact or skill prose -- the audience is non-technical. - ⊗ Skip the decision point -- the build skill MUST refuse kickoff
until the user has explicitly chosen build / rescope / no-build /
skip(+reason). - ⊗ Hide the
DiscussandBackoptions or place them at the top of
the menu -- they MUST be the final two numbered options per #767. - ⊗ Generate
COST-ESTIMATE.mdand chain into build silently without
surfacing the decision point. - ⊗ Skip the
Skipreason -- if the user opts to skip the cost phase,
the reason MUST be recorded so the artifact's existence is auditable. - ⊗ Cite live vendor pricing as a guarantee -- the artifact is a
snapshot; pricing changes over time. - ⊗ Localise to non-USD currency in the first pass -- USD-only is the
contract; international users convert manually. - ⊗ Promise a project will "definitely" stay within a band -- always
say "expected", "typical", or "in our estimate".
EXIT
When the user makes a decision in Phase 4 and the decision is recorded
in COST-ESTIMATE.md:
- ! Confirm exit explicitly:
deft-directive-cost complete -- exiting skill. - ! State the next step based on the decision:
BuildorSkip-> chain intoskills/deft-directive-build/SKILL.mdRescope-> chain intoskills/deft-directive-refinement/SKILL.md
for targeted spec edits, then re-run this skillNo-build-> exit; do NOT chain into buildDiscuss-> remain in this skill until the user picks 1-4Back-> chain back to the previous skill (spec / setup)
⊗ Exit this skill silently without confirming completion or providing
next-step instructions.