Skip to content

unic-spec-review S1: skeleton tracer bullet — classify one URL, fetch page, one Gaps agent, write report #202

@orioltf

Description

@orioltf

Parent

Epic: #200 — unic-spec-review plugin: adversarial review of web specifications.

What to build

The first end-to-end tracer bullet for /review-spec. Given a single Confluence page URL, the command classifies the link, fetches that one page over the Atlassian REST API, runs exactly one dimension agent (Gaps/Completeness), prints the resulting Findings conversationally, and writes a durable timestamped markdown report to .spec-review/ (gitignored). The run is strictly read-only.

This slice establishes the plugin's skeleton: argument parsing, link classification, Confluence page read, the report renderer, and vendored credentials — the rails every later slice builds on. It is deliberately one source, one page, one agent: no traversal, no comments, no Figma/live, no posting.

Because this is the first .mjs to land, this slice also restores the plugin's test harness: re-add the test and typecheck scripts and tsconfig.json to package.json, and create the scripts/ and tests/ directories (the scaffold is command-only until now).

Vendor (copy, do not cross-import) atlassian-fetch.mjs and credentials.mjs from unic-pr-review, per ADR-0001 self-containment. For this slice only the Confluence page-read path of atlassian-fetch is needed.

Acceptance criteria

  • /review-spec <one Confluence page URL> fetches that page and runs the Gaps/Completeness dimension agent against its content.
  • link-classifier routes a Confluence URL to the confluence kind and extracts the page id; non-Confluence/unknown URLs are handled gracefully.
  • args parses /review-spec arguments (a pasted URL block today; --post is recognised but inert in this slice).
  • Gaps Findings are printed conversationally and report-renderer writes a timestamped markdown report under .spec-review/.
  • The run performs zero writes to any external service (read-only invariant holds with no --post handling yet).
  • atlassian-fetch.mjs and credentials.mjs are vendored by copying from unic-pr-review; nothing is cross-imported from another plugin.
  • package.json regains test and typecheck scripts and tsconfig.json; scripts/ and tests/ exist.
  • node:test unit tests cover every pure module in this slice (link-classifier, args, report-renderer, vendored credentials, and the atlassian-fetch page-read path) using injected fetch/homedir/env; no live services touched. The Gaps agent prompt and the thin command orchestrator are not unit-tested.
  • PR adds CHANGELOG.md bullets under [Unreleased] and bumps the patch version via pnpm --filter unic-spec-review bump patch; verify:changelog passes. No em dash in authored text (except the mandated CHANGELOG version header).

Blocked by

None - can start immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    app:unic-spec-reviewArea: apps/claude-code/unic-spec-reviewfeatureNew capabilityready-for-agentFully specified, ready for an AFK agent

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions