Skip to content
Development
Skill

/attack-shape

Use when the user wants adversarial stress-testing of a proposed architecture, structure, or shape. Not for tasks that require source or remote-system changes.

From plugin
odin-claude-plugin
36200 skills
Install
$ npx -y skills add OutlineDriven/odin-claude-plugin --skill attack-shape --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/attack-shape

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when the user wants adversarial stress-testing of a proposed architecture, structure, or shape. Not for tasks that require source or remote-system changes.

SKILL.md

attack-shape.SKILL.md
name: attack-shape
description: 'Use when the user wants adversarial stress-testing of a proposed architecture, structure, or shape. Not for tasks that require source or remote-system changes.'

Attack shape

Contract

| Field | Bound contract | |---|---| | Trigger | User wants adversarial stress-testing of an architecture, structure, or shape. Either the agent attacks and the human defends, or the agent proposes and the human attacks. | | Authority | Read-only. No file, VCS, credential, paid, published, deployed, or remote mutation. The agent emits chat output only. | | Side effect | An attack or proposal transcript in chat, plus the surviving or broken shape recorded in chat. | | Done | The shape has been attacked from both directions, the human has defended or attacked, and the surviving shape (or non-converged record) is recorded. |

Inputs

The proposed architecture, structure, or shape to test. The human must supply it as text, a diagram description, or a reference to an artifact already in context. Without it the skill stops.

Optional: named attack axes the human wants prioritized (coupling, abstraction depth, failure modes, scalability, ownership boundaries).

Optional: a scope limit naming what is out of bounds for the attack.

Optional: constraints, scale, existing components, and non-goals for a proposal round.

A human participant must be present; the skill does not converge without one.

Procedure

1. Restate the target shape from the supplied input and confirm scope with the human before attacking or proposing. Do not test material outside the stated scope. Done when: the shape is restated and scope is confirmed.

2. Determine the direction. If the human supplied a shape to attack, the agent attacks and the human defends. If the human asked the agent to propose, the agent proposes and the human attacks. Done when: the direction is set and the first move is made.

3. Enumerate the attack axes relevant to the shape: coupling between parts, abstraction depth versus leakage, failure and recovery paths, scalability and growth pressure, ownership and boundary clarity, plus any named axes the human supplied. Done when: all relevant axes are enumerated.

4. Mount the first move. In attack mode: for each axis, state the specific structural weakness, the condition under which it fails, and the evidence. Each attack must be falsifiable by the human's defense. In propose mode: propose one architecture shape with components, boundaries, data flow, and the single load-bearing decision that makes it cohere, plus the failure mode each component rejects. Done when: each attack states weakness, failure condition, and evidence, or the proposal names components, boundaries, data flow, the load-bearing decision, and per-component rejected failure modes.

5. Present the moves and invite the human to respond. Wait for the human's defense or attack before judging survival on any axis. Done when: the human is invited and the agent waits.

6. For each response, classify the outcome: rebutted (the shape survives that axis), landed (the shape must change on that axis), or deferred (insufficient information to judge). Done when: each axis is classified.

7. When an attack lands or a human attack breaks a proposal, propose the minimal shape change that resolves the weakness and re-test the changed portion once. Done when: a minimal shape change is proposed and re-tested once.

8. Repeat steps 3 through 7 until every axis is either rebutted or resolved, or the human ends the session. Done when: every axis is rebutted or resolved, or the human ends the session.

9. Record the surviving shape: the final structure, the attacks it survived with their rebuttals, the changes made, and any deferred or non-converged axes with their open questions. Done when: the final structure, survived attacks, changes, and deferred axes are recorded.

Failure and recovery

No target shape supplied and no proposal requested. Stop and ask the human for the shape and scope. Do not invent a shape to attack or propose.

Attack not falsifiable on an axis. Classify that axis as deferred with the open question. Do not claim it survived.

Human response absent or non-substantive for a landed attack. Mark the axis as unresolved. Do not declare the shape surviving on that axis.

Scope widening. If the human introduces new material mid-session, restate the new scope and confirm before continuing. Never silently expand the attack surface.

Non-convergence. If the same axis oscillates without resolution across two re-tests, record it as non-converged with the conflicting positions rather than forcing a verdict.

No mutation. This skill writes nothing to disk or VCS. Recovery is to restate the surviving or non-converged shape in chat.

Output

A surviving-shape record in chat containing the final structure, the list of attacks it survived with their rebuttals, the changes made during the session, and any deferred or non-converged axes with their open questions. If the shape did not survive, output the non-converged record naming the unresolved axes.

Read more
Ships withodin-claude-plugin

Formerly the ODIN Claude Plugin. The repository URL is unchanged. Outline-Driven Development, nicknamed ODIN, is a highly opinionated code-agent skill library: principles-first engineering, surgical editing, and workflow automation, published as installable

Get the whole plugin
Stats
36
Stars
0
Forks
Active
Maintenance
Python
Language
Apache-2.0
License
2d ago
Last commit
10mo ago
Created

Repo: OutlineDriven/odin-claude-plugin

Other skills on odin-claude-plugin.