Skip to content
Back to skills

Skill

ASecurity

Clarification guardrail for code changes. Before implementing, inspects the repository for evidence, resolves every material ambiguity with the user, and blocks silent assumptions during implementation. Applies to any request that creates, modifies, or deletes code, configuration, data, or infrastructure.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 29, 2026
ai-agentsgosecurity

Security analysis

A100/100

Pro scans all 17 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add imanhavangi/NoAssume --skill skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Skill?

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

Security grade badge for Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/imanhavangi-skill/badge)](https://www.skillsdirectory.com/skills/imanhavangi-skill)

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: noassume
description: Clarification guardrail for code changes. Before implementing, inspects the repository for evidence, resolves every material ambiguity with the user, and blocks silent assumptions during implementation. Applies to any request that creates, modifies, or deletes code, configuration, data, or infrastructure.
---

# NoAssume

Stop coding on assumptions.

## The invariant

Before writing code, every **material implementation decision** must be one of:

1. **Specified** — stated explicitly by the user, in this request or earlier.
2. **Proven** — established by repository or project evidence with sufficient confidence.
3. **Delegated** — explicitly handed to you by the user.
4. **Clarified** — asked and answered during this session.

A decision that fits none of these is an **unresolved assumption**. Unresolved
material assumptions block implementation. No exceptions for "obvious" defaults:
a default you chose silently is still an assumption.

A decision is material when two reasonable implementations of it would differ in
observable behavior, architecture, security, compatibility, cost, or
maintenance. When in doubt, treat it as material. See `references/ambiguity.md`.

## Operating loop

    DISCOVER → EXTRACT → CHALLENGE → CLARIFY ⇄ ABSORB → GATE → IMPLEMENT → AUDIT

1. **Discover** — inspect the repository and project state before asking the
   user anything. Never ask what evidence already answers. See
   `references/discovery.md`.
2. **Extract** — decompose the request into requirements, constraints, and
   unknowns. Record them in `.noassume/local/current/`. See
   `references/state.md`.
3. **Challenge** — attack your own interpretation: could two competent
   engineers build materially different things from this spec? Every "yes" is
   an ambiguity. See `references/ambiguity.md`.
4. **Clarify** — ask the user, in ordered batches, every blocking and material
   ambiguity that evidence did not resolve. Offer options and a recommendation;
   let the user decide. See `references/clarification.md`.
5. **Absorb** — record answers as decisions, then re-audit the affected parts
   of the spec. Answers routinely create second-order ambiguities; loop until
   none remain.
6. **Gate** — when every criterion in `references/gate.md` holds — zero
   blocking and material ambiguities, zero material assumptions, zero
   unresolved conflicts, zero unresolved protected decisions — write the plan
   and Definition of Done, then proceed. The gate is binary: READY or NOT
   READY. Do not ask permission to continue — if the user asked for
   implementation, implement. See `references/gate.md`.
7. **Implement** — follow the plan and the decision ledger. Pause and clarify
   any material ambiguity discovered mid-flight; never silently expand scope.
   See `references/implementation.md`.
8. **Audit** — check the result against the decisions and Definition of Done.
   Report deviations only; do not append a compliance report to clean work.

## Modes

The effective strictness is resolved from three inputs, in order:

    profile (balanced | strict | critical)   ← .noassume/config.yaml or user command
    + user overrides in config.yaml
    + task risk escalation

`balanced` is the default. `strict` and `critical` lower the bar for what counts
as material and raise the evidence required to skip a question. High-risk tasks
(security, auth, infrastructure, data, production, destructive operations)
escalate automatically — the user can raise the level for a task but the task
cannot lower it below its risk floor. See `references/config.md`.

## Delegation and protected decisions

The user may delegate decisions — per question ("use your judgment"), per
category (in `config.yaml`), or with a blanket statement ("decide anything I
didn't specify"). Delegation resolves an ambiguity without a question, and it is
recorded as a DELEGATED decision.

A short list of **protected decisions** can never be resolved by blanket
delegation; they need an explicit, specific confirmation:

- deleting or overwriting data
- irreversible migrations
- changes to authentication or authorization
- exposing secrets
- exposing services publicly or changing network boundaries
- anything that modifies production systems

An explicit informed override ("yes, I know it deletes the table, do it") is
valid — the point is that the user consciously chose. See
`references/delegation.md`.

## Runtime controls

The user can steer NoAssume mid-session. Recognize these forms in plain
language or as commands (`/noassume` where the agent supports it):

- **"noassume off"** — suspend the protocol for this session. Log it; resume
  normal behavior for the task.
- **"noassume balanced | strict | critical"** — set the mode for the current
  task (persisted only if the user edits `config.yaml`).
- **"noassume status"** — report the current phase, open ambiguities, and
  decisions in force.
- **"promote this"** — move a decision into `.noassume/project.md` as a
  permanent project rule.

Suspension does not remove the protected-decision floor — explicit
confirmation is still required for destructive, production, and
security-boundary changes.

## State

Persistent state lives in `.noassume/`:

- `.noassume/config.yaml` — policy. Committed; shared by the team.
- `.noassume/project.md` — permanent project rules the user has promoted.
  Committed.
- `.noassume/local/` — session state, never committed: `current/` holds the
  live task's ledgers, plan, and state; `repository.md` caches discovery
  knowledge; `history/` archives finished tasks.

If `.noassume/` does not exist, bootstrap it from `templates/` before the
first clarification round. Full file formats and the task lifecycle:
`references/state.md`.

## Non-negotiable rules

- Never ask a question the repository answers with sufficient confidence.
- Never treat an existing pattern as proof when evidence conflicts or the
  decision is high-risk — existing code can be technical debt.
- Ask every blocking and material ambiguity unless explicitly delegated. Do
  not trim the list because it is long; do not cap the number of questions.
- Every decision carries a class: SPECIFIED, PROVEN, DELEGATED, CLARIFIED,
  INFERENCE, ASSUMPTION, or CONFLICT. Nothing else.
- Answers change the spec. After every clarification round, re-audit.
- Match the user's language in questions, plans, and reports.
- If evidence contradicts the user's intent, surface the conflict and ask —
  do not pick a side silently.

Files in this skill

  • SKILL.md6.4 KB
  • references/ambiguity.md4.8 KB
  • references/clarification.md3 KB
  • references/config.md3.5 KB
  • references/delegation.md3.1 KB
  • references/discovery.md4.7 KB
  • references/gate.md2.3 KB
  • references/implementation.md2.6 KB
  • references/state.md5.4 KB
  • templates/ambiguities.md427 B
  • templates/assumptions.md476 B
  • templates/config.yaml1.9 KB
  • templates/decisions.md425 B
  • templates/plan.md684 B
  • templates/project.md798 B
  • templates/repository.md304 B
  • templates/state.md291 B

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…