Skip to content
Back to skills

Discuss

ASecurity

Explore a task and validate the overall strategy before implementation. TRIGGER for ambiguous tasks, design discussions, multi-step work, risky changes, or when the user asks a question before implementation.

  • 24 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 3, 2026
ai-agentsgoshellapiperformance

Works with

  • api

Security analysis

A100/100

Scanned October 4, 2026

npx -y skills add ooloth/dotfiles --skill discuss --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Discuss?

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

Security grade badge for Discuss
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ooloth-discuss/badge)](https://www.skillsdirectory.com/skills/ooloth-discuss)

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: discuss
description: Explore a task and validate the overall strategy before implementation. TRIGGER for ambiguous tasks, design discussions, multi-step work, risky changes, or when the user asks a question before implementation.
argument-hint: '[task number or description]'
effort: high
model: opus
---

## Context

- The task (or issue, problem, ticket, etc) the user wants to discuss is what they mentioned here: $ARGUMENTS

## Your task

This is a discussion/strategy skill. Do not make side-effecting changes while using it: no edits,
writes, mutating shell commands, commits, posted comments, or ticket creation. Read-only exploration
is allowed when needed. Do not plan fine implementation details (type design, slices, tests) — that
belongs to `/design`, which runs after the user approves the approach.

### Phase 1: Load Context Progressively

1. Read `~/.agents/standards/README.md` and `~/.agents/standards/decision-making.md`. Both always
   apply: recommending an approach is a decision.
2. List `~/.agents/standards/` and load any other file whose theme matches the task.
3. Load additional standards files only when the investigation shows they matter.
4. If the task scope is still unclear, prefer asking a clarifying question over loading every file.
5. Read the project's recorded decisions. List the titles in `DECISIONS.md`, `docs/decisions/`,
   `docs/adr/`, `doc/adr/`, `adr/` and `docs/architecture/decisions/`, and search the repo for
   "ADR". A project may record decisions somewhere else, so also check its `CLAUDE.md`,
   `AGENTS.md`, `README.md` and `docs/README.md` for where it says decisions live. Open a record
   only when its title touches the task. If the task came from a ticket with a **Decisions**
   section, repeat this search anyway: records may have been added or superseded since the ticket
   was written, and its author knew less than you do now.

### Phase 2: Understand Intent

1. If the user did not specify what they want to discuss, ask them for that information.
2. If the user asked a question, answer the question before proposing anything.
3. Use read-only exploration and subagents only as needed to understand the current code, docs,
   constraints, and likely impact.
4. If the idea seems stale or poorly matched to the current codebase, investigate enough to help the
   user decide whether to redefine, defer, or skip it.
5. Facts are your job, not the user's — dispatch subagents to find them. Ask the user only what
   blocks a correct approach decision, and batch those into one numbered round with a recommended
   answer for each rather than drip-feeding one question per turn. Don't ask about anything still
   gated on a question you haven't gotten an answer to yet. For a two-way-door decision, derive a
   recommendation from the properties rather than handing the choice to the user. Being easy to
   reverse does not excuse skipping the derivation.

### Phase 3: Recommend an Approach

A recorded decision that covers the task is a constraint on every option below. An option that
contradicts one is not taken quietly: superseding the record is an open decision in its own right,
presented under **Open decisions** with the record linked. Where applying a record to this task
takes interpretation, whether it applies is also an open decision.

1. Derive the properties a good answer must have, from what the system will actually do, before
   considering any option. Not from what the ticket or existing docs say it needs; that is the
   previous author's list and it reads as complete because it was written as a summary. State each
   as an observable property, and say which bind and which do not.

   Observable means something observes it. For each property that binds, name what does: a type, a
   test, an assertion, a check against recorded state, or a measurement that already exists. Where
   nothing does, taking that measurement is part of the work rather than an assumption carried past
   this point. A property nobody can observe is an intention, and every option below is scored
   against this list.

2. Recommend the simplest approach that delivers those properties. Simplicity is how a property is
   reached cheaply, never a reason to drop one. Push back on scope, abstraction, configurability or
   compatibility work that no stated property requires.

3. Implementation effort is a constraint, never a merit. It rules an option out only against a
   budget the user stated. "X is simpler to build" is not a reason to prefer X unless it also names
   a property X delivers better. Cost is what an option spends to deliver the properties, not a
   score it competes on, unless the user has stated a view on it, in which case it enters the table
   as a row citing that statement.

4. Score every option against every property in one table, options as rows and properties as
   columns. Before accepting any tradeoff, state the theoretical maximums for safety, performance
   and experience for the thing being decided, as `decision-making.md` defines them, and look for a
   design that comes close to all three. First list the ways a bad design could go wrong or cause
   harm, be slow, or be hard to use or change, in all three categories and not only the one the task
   is about. Options
   framed as points on one curve,
   such as "fast or correct" or "simple or safe", are the sign this step was skipped. A tradeoff
   that remains names the physical fact that forces it.

   If more than one option survives, the list is not finished. Zoom into each property every
   survivor passes, and extend the list to moments and softer properties not yet covered, each
   citing its source. Score again. An unknown cell is resolved before the option it belongs to is
   kept or dropped. Recommend only what the table yields, and present the passes that got there.

5. Flag reversibility for each significant decision:
   - **Two-way door** (easily reversible) — it may be taken earlier than a one-way door, but it is
     derived and scored just as carefully. Reversibility lowers the cost of being wrong, not the
     care owed to being right.
   - **One-way door** (costly to undo: public APIs, data schemas, pricing, core UX patterns users
     learn) — requires explicit sign-off; include an ADR-lite entry in the plan:

   ```
   ## Decision: [short title]
   Context: [problem, constraints]
   Options considered: [A, B, C]
   Choice: [X], because [reason]
   Reversibility: one-way door
   Revisit trigger: [metric / date / condition that reopens this]
   ```

   A revisit trigger naming a metric requires that metric to exist. Where nothing records it,
   recording it is part of the decision rather than a later step: a trigger keyed to a measurement
   nobody takes never fires, and the record then reads as revisitable while being permanent.
   `decision-making.md` asks for the observable condition that would reopen a decision, and an
   unobservable one does not satisfy it.

6. Where the approach spans processes, asynchronous work, or separate runs, settle what ties events
   together across that boundary and where anything durable is kept. `decision-making.md` names a
   missing identifier that turns a later feature into a migration as a canonical example of an
   option closed without anyone noticing, and a correlation identifier is exactly that: adding one
   later means changing every interface it crosses. Whether a store exists that a later check can
   read, and which one, is the same kind of decision, since a slice can conform to such a store but
   cannot invent one. Name both, or name their absence, so `/design` is not left to improvise a
   mechanism from inside a single slice.

### Phase 4: Present and Stop

Before presenting, review what you are about to claim:

1. Every claim is either verified — with how — or explicitly tagged as an assumption. An untagged
   claim is a defect regardless of whether it turns out to be true.
2. For each assumption, ask "would this being wrong change the recommendation?" If yes, it belongs
   in open decisions, not assumptions — resolve it by asking or investigating before presenting.
3. An assumption that contradicts observable code or config is surfaced, not silently recorded as
   fact. If the user states how something works and the codebase disagrees, the contradiction
   becomes an open question — not a quietly resolved assumption in either direction.

End with a strategy artifact:

1. **Understanding** — what the user wants and any assumptions
2. **Target properties** — what a good answer must do, derived in Phase 3, with which of them bind
   and which do not and why, and what observes each one that binds. This section comes before any
   option is named, and no recommendation below it is valid without it.
3. **Findings** — relevant code/docs/current-state facts discovered, including each recorded
   decision that binds the task (linked), or where you looked if none did
4. **Recommendation** — preferred approach, scored against each target property, including what
   ties events together across any process, async or run boundary it introduces, and where anything
   durable that a later check reads is kept. It ends with the alternatives a competent person would
   have chosen, each with the property it fails
5. **Open decisions** — only decisions that block correct implementation
6. **Approval request** — ask the user to approve this approach, and offer to run `/design` next
   to produce the type story, assertion plan, telemetry plan, test plan, and implementation slices

When the work is on a ticket, the plan comment is drafted from three sections of this artifact:
**Target properties**, **Recommendation** (including its alternatives) and **Open decisions**. A
point from **Findings** that the approach rests on goes in beside the step it supports; the rest
of **Findings** stays out. The comment's done-when is the ticket's Ideal state plus whatever the
approach adds to it.

If the user answers clarifying questions, incorporate the answers, present the updated strategy,
and stop again. Do not treat answers to questions as approach approval.

When the user explicitly approves the approach, recommend running `/design` to translate it into a
concrete implementation plan before any code is written.

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.