/gaia-nfr

user-facing
Category:
Testing
Lifecycle phase:
Anytime
Arguments:
[story-key]

What it does

/gaia-nfr produces a structured non-functional requirements assessment covering four dimensions: performance, security, reliability, and scalability. Each dimension receives a risk rating (high, medium, or low) with mandatory justification explaining why that level was chosen. For brownfield projects, it also assesses migration risks.

When to use it

  • You need to assess quality attributes (latency targets, throughput requirements, availability SLAs, security requirements) before or during implementation.
  • You want to identify performance-sensitive paths and bottleneck candidates in your architecture.
  • You are onboarding a brownfield project and need to assess migration risks alongside standard NFRs.

Prerequisites

  • PRD and architecture documents are recommended. The command reads NFRs from .gaia/artifacts/planning-artifacts/prd.md and .gaia/artifacts/planning-artifacts/architecture.md. Without them, a generic assessment based on common patterns is produced.

Orchestration mode

When /gaia-nfr starts in subagent mode (Mode A -- the default), the framework emits a one-shot warning to your conversation. The warning text:


────────────────────────────────────────────────────────────────────────────
GAIA orchestration: running in subagent mode (Mode A)

The skill you're invoking belongs to a class (heavy-procedural or
conversational) whose output benefits from cross-step context. Mode A
dispatches each sub-agent in its own forked context, so context may
be lossy between steps — sub-agents return summaries, not full reasoning.

For the full-fidelity experience, enable Mode B (Agent Teams):
  1. Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in your environment.
  2. Add orchestration.mode: team to .gaia/config/project-config.yaml.

Mode B uses persistent teammates that preserve in-conversation state
across dispatches.

This warning is shown once per session.
────────────────────────────────────────────────────────────────────────────

Why Mode B is better for this command

The /gaia-nfr skill declares orchestration_class: heavy-procedural in its SKILL.md frontmatter. Heavy-procedural skills produce output that benefits from cross-step context -- under Mode A every sub-agent dispatch runs in its own forked context and can only return a summary back to the orchestrator, losing the full reasoning trace of every prior step. Mode B uses persistent teammates that retain in-conversation state across dispatches, so each agent's contribution can build on what was said before instead of receiving only a summary.

How to enable Mode B

Both steps are required. If either is missing, the framework falls back silently to Mode A and the warning fires again on the next session.

Step 1 -- set the environment variable:

export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

Add this to your shell rc file to persist across sessions, or set it in Claude Code's settings.json.

Step 2 -- add the YAML block to .gaia/config/project-config.yaml:

orchestration:
  mode: team

One-shot semantics

The warning is emitted once per Claude Code session. A marker file at _memory/checkpoints/orchestration-warning-shown.<session-id> suppresses the warning for the rest of the session. Starting a new session re-emits the warning once.

How to invoke

/gaia-nfr
/gaia-nfr E3-S7

What it does step by step

  1. Load NFRs Reads non-functional requirements from the PRD and architecture document (response time targets, throughput, availability SLAs, security requirements, data protection obligations).
  2. Performance assessment Evaluates P50/P95/P99 latency, throughput, and resource limits. Rates risk level with justification.
  3. Security assessment Evaluates authentication, authorization, data protection, and compliance. Rates risk level with justification.
  4. Reliability assessment Evaluates availability targets, failure recovery, data durability, and monitoring. Rates risk level with justification.
  5. Scalability assessment Evaluates horizontal/vertical scaling, data growth, and geographic distribution. Rates risk level with justification.
  6. Migration assessment (conditional) Activated for brownfield projects. Evaluates data migration, API compatibility, and rollback risks.
  7. Write report Produces the assessment at .gaia/artifacts/test-artifacts/nfr-assessment.md.

Inputs

InputSourceDescription
PRD.gaia/artifacts/planning-artifacts/prd.mdNFR definitions and targets.
Architecture.gaia/artifacts/planning-artifacts/architecture.mdSystem design for bottleneck analysis.

Outputs

OutputLocationDescription
NFR assessment.gaia/artifacts/test-artifacts/nfr-assessment.mdPer-dimension risk ratings with justification and recommendations.

Example session

> /gaia-nfr

Loading NFRs from prd.md and architecture.md...

Performance:   MEDIUM -- P95 latency target of 200ms is achievable with current
               architecture, but the report aggregation endpoint lacks pagination
               and may degrade under load.

Security:      HIGH -- Authentication uses JWTs but token rotation is not
               implemented. No rate limiting on the login endpoint.

Reliability:   LOW -- Single-region deployment with daily backups meets the 99.5%
               SLA target.

Scalability:   MEDIUM -- Horizontal scaling via container orchestration is
               designed but not load-tested.

Written to .gaia/artifacts/test-artifacts/nfr-assessment.md

What to run next

Troubleshooting

Generic assessment produced

Neither PRD nor architecture document was found. Create them with /gaia-create-prd and /gaia-create-arch for a more targeted assessment.

I keep seeing the GAIA orchestration warning every time I start this command

The warning is shown once per session, so if it fires again that's a new session -- not a per-skill repeat. If you want to silence it entirely, enable Mode B (full-fidelity orchestration via Agent Teams). Both of these conditions must be true:

  • echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS returns 1 (not empty)
  • .gaia/config/project-config.yaml contains:
    orchestration:
      mode: team

If either is missing the framework silently uses Mode A and re-emits the warning each session.