Skip to content

NUE is the first mate - #1

Open
Nuropunk wants to merge 4 commits into
mainfrom
cursor/nue-firstmate-89a9
Open

NUE is the first mate#1
Nuropunk wants to merge 4 commits into
mainfrom
cursor/nue-firstmate-89a9

Conversation

@Nuropunk

@Nuropunk Nuropunk commented Aug 20, 2026

Copy link
Copy Markdown
Owner

NUE is the first mate. The captain talks only to NUE.

This branch overlays firstmate's full crew distro with NUE identity:

  • Cursor plugin (nue) with always-on first-mate rule, slash commands, and crew agents
  • bin/nue / bin/nue.sh identity front door to the firstmate toolbelt
  • Identity contract test covering skills, hooks, spawn/send/control/watch surfaces
  • License attribution for the NUE overlay on Kun Chen's MIT firstmate

The complete firstmate engine is unchanged: tmux/herdr/zellij/orca/cmux backends, ship/scout lifecycle, secondmates, Relay, zero-token supervision, and Cursor session hooks.

Local home also updates AGENTS.md and README.md so the running first mate calls itself NUE. Git HTTPS push from this cloud agent was unavailable, so those two files may still need a local push to match the home checkout.


Note

Low Risk
Changes are mostly metadata, prompts, and a thin exec wrapper over existing scripts; no core spawn/supervision logic is modified in this diff.

Overview
This PR rebrands the firstmate crew distro around NUE as the captain-facing first mate without changing the underlying bin/fm-*.sh engine.

It adds a Cursor plugin (.cursor-plugin/plugin.json) that wires skills, agents, rules, and slash commands, plus an always-on rule (rules/nue-first-mate.mdc) and thin command/agent stubs that point at existing skills and AGENTS.md. Crew roles (crewmate, scout, secondmate) are defined to report only through NUE.

A new bin/nue / bin/nue.sh launcher is the identity front door: it prints whoami/help and resolves nue <fm-command> to bin/fm-<command>.sh, with guards against path-like or unsafe command names.

LICENSE and VISION.md gain NUE attribution and naming. tests/nue-identity.test.sh locks the plugin manifest, hooks, launcher behavior, and expected firstmate surface files (including AGENTS.md NUE wording the test expects on disk).

Reviewed by Cursor Bugbot for commit 201f84e. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor

cursor Bot commented Aug 20, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_cd34c60c-7931-47d4-9f9f-34b8f7d4d02a)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 201f84ed6e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/nue
@@ -0,0 +1,95 @@
#!/usr/bin/env bash

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Mark both NUE launchers executable

Both bin/nue and bin/nue.sh are committed with mode 100644, while the advertised usage invokes bin/nue directly and this test requires both files to be executable. On a fresh checkout, ./bin/nue whoami exits 126 with “Permission denied,” so the new front door is unusable and the identity test will fail once it reaches its executable checks; commit both files with mode 100755.

Useful? React with 👍 / 👎.

Comment on lines +12 to +13
assert_grep 'You are NUE, the first mate.' "$ROOT/AGENTS.md" "AGENTS.md must name NUE as the first mate"
assert_grep 'Call yourself NUE, never firstmate, when speaking to the captain.' "$ROOT/AGENTS.md" "AGENTS.md must keep the NUE speaking name"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Commit the NUE identity into AGENTS.md

Captain, this assertion fails immediately because this commit does not modify AGENTS.md, which still says only You are the first mate. and contains neither asserted NUE sentence. Consequently CI fails in tests/nue-identity.test.sh, and ordinary sessions that load the repository's complete operating contract do not receive the intended NUE identity; add the asserted identity contract to AGENTS.md.

AGENTS.md reference: AGENTS.md:L3-L5

Useful? React with 👍 / 👎.

Comment thread agents/nue.md
@@ -0,0 +1,20 @@
---

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Register the new runtime prose in the audience inventory

Adding the new agents/*.md and commands/*.md files without entries in docs/documentation-audiences.json makes bin/fm-doc-audience-check.sh fail with all nine files reported as unclassified, which in turn fails tests/fm-documentation-audiences.test.sh in the broad CI suite. Register every new agent and command document with the appropriate agent-runtime audience.

Useful? React with 👍 / 👎.

Comment thread VISION.md
# Vision

`firstmate` exists so that one person can run a crew of coding agents with the leverage of a team and the accountability of a single pair of hands.
In this home the first mate is NUE; the captain still talks to one liaison, and NUE still runs the crew.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Map VISION.md in changed-test selection

Because this commit changes VISION.md without adding it to bin/fm-test-run.sh's changed-file mapping, the documented bin/fm-test-run.sh --changed --base main --list workflow exits with no changed-test mapping for source path: VISION.md before it can select the new identity test. Treat VISION.md as a documentation-only path alongside README.md and docs/*, or map it to the intended test family.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant