/office-hours
The design-doc generator. Takes an unstructured problem statement and produces a structured design document with: context, goals, premises, decisions, risks, scope, and a forcing-question section. Output lands at ~/.lintel/projects/<slug>/<user>-<branch>-design-<datetime>.md and is the input to /plan-ceo-review and /plan-eng-review.
When to use
- New feature, big idea, or non-trivial change with multiple plausible directions
- Before any implementation, want to lock scope + decision rationale in writing
- Initial step of
/autoplan chain
- Greenfield project setup — first design doc establishes the foundation
When NOT to use
- Trivial fix or small change —
/plan-eng-review against the diff is enough
- Plan already exists — skip to the review skills
- Brainstorming only, no commitment intended — use
/design-consultation instead
Inputs
- Required: the problem statement (inline prose or path to a draft markdown)
- Optional
--scope <area> — narrow the design to a specific surface (e.g. "billing", "portal-auth")
- Optional
--reference <files> — additional context files to read in (existing ADRs, codebase docs, prior designs)
- Optional
--mode <full|minimal> — full (default) runs all sections; minimal skips Risks + Forcing Questions for small designs
Workflow
- Locate or create project dir.
~/.lintel/projects/<slug>/ based on repo name + branch. Create if absent.
- Read context. Project CLAUDE.md, any
--reference files, recent commits for repo state.
- Structured intake. Via AskUserQuestion, gather:
- One-line goal
- Primary user task affected
- Constraints (technical, business, voice, compliance)
- Three plausible directions (operator names them, skill expands)
- Generate sections:
- Context — current state, what's broken, what's working
- Goals — outcome statements, measurable where possible
- Premises — explicit assumptions, called out so they can be challenged
- Decisions Pending — numbered D1, D2... with three alternatives each
- Out-of-Scope — explicit list of what's excluded and why
- Risks — known unknowns, dependencies, single-points-of-failure
- Forcing Questions — 3-5 questions that, if not answered, block implementation
- Write doc. Atomic write to
~/.lintel/projects/<slug>/<user>-<branch>-design-<datetime>.md.
- Set status. Doc header includes
Status: DRAFT. Operator marks APPROVED after addressing forcing questions.
- Report path + next step.
Output structure
---
title: <one-line>
status: DRAFT
created: 2026-05-27T17:42:00Z
user: jokerman
branch: main
slug: jokerman-lintel
---
# <One-line goal>
## Context
...
## Goals
- G1: ...
- G2: ...
## Premises
- P1: ...
- P2: ...
## Decisions Pending
### D1: <one-line decision>
A) <option> — trade-off
B) <option> — trade-off
C) <option> — trade-off
Recommendation: A
### D2: <one-line decision>
...
## Out of Scope
- ...
## Risks
- R1: ...
## Forcing Questions
1. ...
2. ...
## REVIEW REPORT
[appended by /plan-eng-review — must be the LAST h2]
Compliance integration
- Doc body sanity-scanned for Layer 2 patterns (secrets, customer-data, PII). BLOCK on hit.
- Doc lives at
~/.lintel/projects/ (local). Optional sync to brain repo if configured.
- Per Premise of repo policy: no customer data in design docs ever.
Voice tier note
voice: internal. Design docs are engineering-internal. If the design covers a customer-facing surface, copy decisions reference the active pack's voice grid as a standard — but the design prose itself is internal.
Failure modes
- Problem statement too vague: intake interview surfaces the gaps. If 3 rounds of clarifying questions don't produce enough signal: report STUCK + ask operator to draft a paragraph manually first.
- No git repo detected: doc still generated, slug derived from cwd. Report this clearly.
- Doc already exists at target path: ask whether to append, replace, or open new variant (
<ts>-v2.md).
- Forcing questions can't be generated honestly: name that — sometimes the design is clear enough that no question is genuinely forcing.
- Compliance scan hits on intake prose: STOP, request sanitized restatement.
Examples
Standard:
> /office-hours "new pricing page with tiered display"
[Intake interview, 4 questions]
✓ Doc: ~/.lintel/projects/.../jokerman-main-design-20260527-174200.md
Status: DRAFT (operator marks APPROVED after addressing forcing questions)
Next: /plan-ceo-review on this doc.
With references:
> /office-hours "billing refund flow rewrite" --reference docs/billing-adr.md docs/payment-provider.md
[Reads references, intake interview]
✓ Doc generated with references embedded.
Minimal:
> /office-hours "rename internal helper from getCwd to getCurrentWorkingDirectory" --mode minimal
[Skips Risks + Forcing Questions]
✓ Lightweight doc generated. Ready for /plan-eng-review.
See also
/plan-ceo-review — next step in the plan chain
/plan-eng-review — required review gate, appends the REVIEW REPORT
/autoplan — orchestrates this skill + reviews in one chain
/design-consultation — exploratory discussion before committing to a design doc
1---2name: office-hours3description: Use to turn a rough problem statement into a structured, decision-gated design doc ready for engineering review. Reach for it when you have a problem to think through but no plan yet, and want the design pinned down before committing to architecture.4---56# /office-hours78The design-doc generator. Takes an unstructured problem statement and produces a structured design document with: context, goals, premises, decisions, risks, scope, and a forcing-question section. Output lands at `~/.lintel/projects/<slug>/<user>-<branch>-design-<datetime>.md` and is the input to `/plan-ceo-review` and `/plan-eng-review`.910## When to use1112- New feature, big idea, or non-trivial change with multiple plausible directions13- Before any implementation, want to lock scope + decision rationale in writing14- Initial step of `/autoplan` chain15- Greenfield project setup — first design doc establishes the foundation1617## When NOT to use1819- Trivial fix or small change — `/plan-eng-review` against the diff is enough20- Plan already exists — skip to the review skills21- Brainstorming only, no commitment intended — use `/design-consultation` instead2223## Inputs2425- Required: the problem statement (inline prose or path to a draft markdown)26- Optional `--scope <area>` — narrow the design to a specific surface (e.g. "billing", "portal-auth")27- Optional `--reference <files>` — additional context files to read in (existing ADRs, codebase docs, prior designs)28- Optional `--mode <full|minimal>` — `full` (default) runs all sections; `minimal` skips Risks + Forcing Questions for small designs2930## Workflow31321. **Locate or create project dir.** `~/.lintel/projects/<slug>/` based on repo name + branch. Create if absent.332. **Read context.** Project CLAUDE.md, any `--reference` files, recent commits for repo state.343. **Structured intake.** Via AskUserQuestion, gather:35 - One-line goal36 - Primary user task affected37 - Constraints (technical, business, voice, compliance)38 - Three plausible directions (operator names them, skill expands)394. **Generate sections:**40 - **Context** — current state, what's broken, what's working41 - **Goals** — outcome statements, measurable where possible42 - **Premises** — explicit assumptions, called out so they can be challenged43 - **Decisions Pending** — numbered D1, D2... with three alternatives each44 - **Out-of-Scope** — explicit list of what's excluded and why45 - **Risks** — known unknowns, dependencies, single-points-of-failure46 - **Forcing Questions** — 3-5 questions that, if not answered, block implementation475. **Write doc.** Atomic write to `~/.lintel/projects/<slug>/<user>-<branch>-design-<datetime>.md`.486. **Set status.** Doc header includes `Status: DRAFT`. Operator marks `APPROVED` after addressing forcing questions.497. **Report path + next step.**5051## Output structure5253```markdown54---55title: <one-line>56status: DRAFT57created: 2026-05-27T17:42:00Z58user: jokerman59branch: main60slug: jokerman-lintel61---6263# <One-line goal>6465## Context66...6768## Goals69- G1: ...70- G2: ...7172## Premises73- P1: ...74- P2: ...7576## Decisions Pending7778### D1: <one-line decision>79A) <option> — trade-off80B) <option> — trade-off81C) <option> — trade-off82Recommendation: A8384### D2: <one-line decision>85...8687## Out of Scope88- ...8990## Risks91- R1: ...9293## Forcing Questions941. ...952. ...9697## REVIEW REPORT98[appended by /plan-eng-review — must be the LAST h2]99```100101## Compliance integration102103- Doc body sanity-scanned for Layer 2 patterns (secrets, customer-data, PII). BLOCK on hit.104- Doc lives at `~/.lintel/projects/` (local). Optional sync to brain repo if configured.105- Per Premise of repo policy: no customer data in design docs ever.106107## Voice tier note108109`voice: internal`. Design docs are engineering-internal. If the design covers a customer-facing surface, copy decisions reference the active pack's voice grid as a standard — but the design prose itself is internal.110111## Failure modes112113- **Problem statement too vague:** intake interview surfaces the gaps. If 3 rounds of clarifying questions don't produce enough signal: report STUCK + ask operator to draft a paragraph manually first.114- **No git repo detected:** doc still generated, slug derived from cwd. Report this clearly.115- **Doc already exists at target path:** ask whether to append, replace, or open new variant (`<ts>-v2.md`).116- **Forcing questions can't be generated honestly:** name that — sometimes the design is clear enough that no question is genuinely forcing.117- **Compliance scan hits on intake prose:** STOP, request sanitized restatement.118119## Examples120121**Standard:**122```123> /office-hours "new pricing page with tiered display"124[Intake interview, 4 questions]125✓ Doc: ~/.lintel/projects/.../jokerman-main-design-20260527-174200.md126 Status: DRAFT (operator marks APPROVED after addressing forcing questions)127 Next: /plan-ceo-review on this doc.128```129130**With references:**131```132> /office-hours "billing refund flow rewrite" --reference docs/billing-adr.md docs/payment-provider.md133[Reads references, intake interview]134✓ Doc generated with references embedded.135```136137**Minimal:**138```139> /office-hours "rename internal helper from getCwd to getCurrentWorkingDirectory" --mode minimal140[Skips Risks + Forcing Questions]141✓ Lightweight doc generated. Ready for /plan-eng-review.142```143144## See also145146- `/plan-ceo-review` — next step in the plan chain147- `/plan-eng-review` — required review gate, appends the REVIEW REPORT148- `/autoplan` — orchestrates this skill + reviews in one chain149- `/design-consultation` — exploratory discussion before committing to a design doc