/req — Project Requirements and Delivery Tracking

SkillProductivity

Lightweight project requirements checklist surfaced via /brief. Use to track or update outstanding project tasks.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the /req skill

What this skill tells your AI

The instructions your AI receives, as published by fjwood69/mori in skills/req/SKILL.md and read by ahel’s review.

When the user runs /req, parse the arguments and call the mori_advisor-memory_req MCP tool, or perform CRUD operations on type=requirement memories.

Do NOT search for files locally. All tool calls go through the MCP server.

Modes

/req — Dashboard

Call mori_advisor-memory_req() with no arguments. Shows all requirements grouped by project with status counts.

/req --project <name> — Filter by project

Call mori_advisor-memory_req(project="<name>"). Shows requirements tagged with project-<name>.

/req --project <name> --status <value> — Filter by project and status

Call mori_advisor-memory_req(project="<name>", status="<value>"). Status values: done, pending, in-progress, blocked.

/req add "<title>" --project <name> [--desc "<desc>"] [--pri high|medium|low] [--fr|--nfr]

Create a new requirement memory:

  1. Compute name as req-<project>-<slugified-title> (kebab-case)
  2. Build tags: ["project-<name>", "status-pending", "pri-<priority>"] + "fr" or "nfr" if specified
  3. Call mori_advisor-memory_write(name="<name>", title="<title>", description="<desc>", type="requirement", tags=<tags>, body="<desc>")
  4. Report the created memory name

/req done <name> — Mark complete

  1. Call mori_advisor-memory_read(name) to get current tags
  2. Replace any existing status-* tag with status-done
  3. Call mori_advisor-memory_write(name=..., tags=<updated tags>, type="requirement") with the same name and updated tags

/req block <name> [--reason "<text>"] — Mark blocked

  1. Read current memory via mori_advisor-memory_read(name)
  2. Swap status-* to status-blocked
  3. Append reason to body if provided
  4. Write back via mori_advisor-memory_write

/req wip <name> — Mark in-progress

  1. Read, swap status-* to status-in-progress, write back

/req import <filepath> [--project <name>] — Bulk import

Read the file from the given path, parse requirements, create each one.

Tag conventions

Each requirement memory uses these tags:

TagPurpose
project-<name>Associates with a project
status-pendingNot started (default)
status-in-progressBeing worked on
status-doneCompleted
status-blockedBlocked by external dependency
pri-high, pri-medium, pri-lowPriority
frFunctional requirement
nfrNon-functional requirement

Argument parsing

Parse the raw input string:

  • First positional: mode (add, done, block, wip, import) or empty for dashboard
  • --project / -p: Project name
  • --status / -s: Status filter (dashboard mode only)
  • --desc: Description text
  • --pri: Priority (high, medium, low, default medium)
  • --fr | --nfr: Requirement type flag
  • --reason: Reason (for block mode)

Examples

InputEffect
/reqDashboard of all requirements
/req --project myappView myapp requirements
/req --project mori --status doneCompleted Mori requirements
/req add "OAuth2 login" --project myapp --pri high --frCreate new FR
/req done req-myapp-oauth2-loginMark as done
/req block req-myapp-oauth2 --reason "Waiting on IAM"Block with reason
/req import ./specs.md --project myappBulk import from file

Signals

GitHub stars
28
Forks
5
Last commit
Sep 2026
Advanced
Item type
skill
Key
req
Source
github.com/fjwood69/mori