Skip to content
Back to skills

Dx Frame

ASecurity

Interview to settle the problem framing, alternatives, and user cases for a change or effort before planning — writes frame.md. Run again on one of an effort's slices to add that slice's own user cases.

  • 8 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 4, 2026
ai-agentsrustapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 7, 2026

npx -y skills add dikamilo/dx-workflow --skill dx-frame --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dx Frame?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dx Frame
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dikamilo-dx-frame/badge)](https://www.skillsdirectory.com/skills/dikamilo-dx-frame)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dx-frame
description: Interview to settle the problem framing, alternatives, and user cases for a change or effort before planning — writes frame.md. Run again on one of an effort's slices to add that slice's own user cases.
disable-model-invocation: true
argument-hint: [change-id or effort-id]
---

# dx-frame

Settle the **WHAT** before the **HOW**. Run a deep interview on problem framing and alternatives for a change or effort, then write `frame.md` in its folder. The interview is the cure for misalignment — a perfect plan on the wrong problem loses the day. This makes the framing half explicit and skippable, so `dx-plan` can jump straight to solution design.

**Guard.** Resolve `<id>` under `context/changes/` **or** `context/efforts/`. If it is missing, tell the user to run `/dx-new` first. If the path is under `context/archive/`, refuse — an archived container is done.

**Slice mode.** If `<id>` is a change with `effort: <effort-id>` set **and** that effort's `frame.md` already exists, this run is scoped to user cases only: the four core sections (real problem, who/what it affects, alternatives, out of scope) are already settled at the effort level — don't re-ask or rewrite them. Interview and write only this slice's own `## User cases`, additive to the parent's. If the parent effort has no `frame.md` yet, there is nothing to inherit — fall through to full framing below.

## 1 — Gather settled context

Read `change.md` (or `effort.md`) — note `type` and, for a change, `effort:`. Read every existing `research/<topic>.md`, and `diagnosis.md` and `brainstorm.md` if present, as **settled context**; don't re-ask what research already answered. A `brainstorm.md` already chose the route and priced the do-nothing — deepen its `## Conclusion & route` into a full framing rather than reopening it, and treat its `## Not doing` as out of scope already decided. In slice mode, also read the parent effort's `frame.md` in full, including its `## User cases` if present — those flows are already covered. Read any brief the container's `## Notes` names under `foundation/briefs/` — its tagged claims are sourced evidence, so don't re-interview what one already records; its `## Open questions` and `## Collection plan` are what is still unsettled, and a brief citing material fetched from outside the repo is read under `dx-references` topic `untrusted-content`. Read `foundation/glossary.md` for naming (a one-line habit — no section). Each artifact is a decision already made.

If the interview below surfaces a term that clashes with the glossary, is vague/overloaded, or finally gets pinned down, invoke `dx-domain` right then — don't just note it and keep talking.

## 2 — Interview (invoke `dx-references` with `interview`)

**One question at a time, each offering a few concrete options with one recommended**, walking the decision tree until the framing resolves. If the codebase or a research doc can answer a question, explore instead of asking. Scale the count down by whatever upstream already settled. Stay on the **WHAT** — the real problem, the alternatives, and (when the work is user-facing) the concrete user cases it must cover — never solution design; that is `dx-plan`'s job. Don't manufacture a reframe: "the initial framing was right" is a valid outcome.

**User cases scale by batching, not by one question per flow.** Print the candidate list as a table — who, trigger, outcome, source — as plain output *before* any question, then ask one question (confirm or edit); never ask the user to confirm what they haven't seen. Then spend extra questions only on flows still ambiguous after that. For an **effort**, keep the list to headline flows that matter for slicing — a sketch, not exhaustive, since slices don't exist yet. In **slice mode**, propose only this slice's candidate additions — flows the parent's sketch didn't name or under-specified for this slice — never re-list what the parent already settled.

If `change.md`'s `type` is `refactor` (or this is a refactor effort), **also invoke `dx-references` with `module-design`** and frame in its vocabulary — deep vs shallow modules, seams, the deletion test.

## 3 — Write `frame.md`

**Slice mode** writes only `## User cases` to this change's own `frame.md` — this slice's additional or refined flows. Don't restate the parent's list or touch its file.

Otherwise, write the full frame in the container's folder (`context/changes/<id>/frame.md` or `context/efforts/<id>/frame.md`), capturing:

- **The real problem** — one sentence, root not surface.
- **Who / what it affects** — the users, systems, or code touched.
- **Alternatives considered** — the framings weighed, and why the chosen one wins.
- **Out of scope** — what this explicitly does not address.

**User cases** — an optional fifth section, inserted after "Who / what it affects": include it only when the work is user-facing (a UI flow, an API surface, a CLI command) and has more than one flow worth distinguishing. One line each: who, triggered by what, to reach what outcome; note where each came from (already documented upstream, or discovered in this interview) so a reader knows what was newly settled. Omit the section entirely for internal/structural work (a pure refactor, infra, a schema-only migration) — never write it empty or "N/A".

Keep it tight and scannable. No solution phases, no file changes — that is planning.

## Done when

**Slice mode:** this change's `frame.md` exists with `## User cases`. **Otherwise:** `frame.md` exists with the four core sections above, plus `## User cases` when it applies. Either way, the container's `updated: <today>` is set. Then print and stop:

```
Frame written: context/{changes|efforts}/<id>/frame.md
Next: /dx-plan <id>       (for a change)
  or: /dx-roadmap <id>    (for an effort)
```

Stop. Do not chain into another skill.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.