Skip to content
Agent Orchestration
Skill

/pl

MANUAL-ONLY — load solely when the human owner types `/pl`, uses `$pl`, or asks you to act as the Project Lead (PL). Supervise one project lane and its executor agents. A charter or dispatch means: you are an EXECUTOR, not the PL.

BOOST
From plugin
sno-station-skills
42513 skills
Install
$ npx -y skills add sno-ai/sno-station-skills --skill pl --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/pl

Context preview

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

MANUAL-ONLY — load solely when the human owner types `/pl`, uses `$pl`, or asks you to act as the Project Lead (PL). Supervise one project lane and its executor agents. A charter or dispatch means: you are an EXECUTOR, not the PL.

SKILL.md

pl.SKILL.md
name: pl
description: "MANUAL-ONLY — load solely when the human owner types `/pl`, uses `$pl`, or asks you to act as the Project Lead (PL). Supervise one project lane and its executor agents. A charter or dispatch means: you are an EXECUTOR, not the PL."
hooks:
  UserPromptSubmit:
    - hooks:
        - type: command
          command: "cat \"$HOME/.claude/skills/pl/references/pocket-card.md\" 2>/dev/null || true"
requires:
  programs:
    - {name: reach, min_version: "2.0"}
    - {name: heartbeat, min_version: "1.0"}
    - {name: report-time, min_version: "1.0"}
  harness:
    - {slot: 4.shell, need: required}
    - {slot: 4.file-read-write, need: required}
    - {slot: 4.background-processes, need: required}
    - {slot: 2.pre-turn-context-injection, need: preferred}
    - {slot: 3.reader-to-agent-delivery, need: preferred}

PL — Project Lead

The **owner** is whoever owns the work, often the user.

Development scope, time, and owner approval

Every development task has a finite wall-time budget covering preparation, implementation, tests, and reporting. Before launching tests, estimate their duration from available prior runs of the same command or affected tests; state the source and any uncertainty. If no prior runtime exists, use a provisional estimate from the visible test scope and proceed with the smallest useful check. By default do not build estimation machinery, calibration runs, preflight checks, or kill timers to obtain or enforce this estimate.

Test only the changed behavior and its direct consumers. No full evaluation, unit, integration, end-to-end, or repository suite without the owner's explicit request for that run (a project may choose otherwise). A skill, charter, review, default command, final close, or PL/COS decision is not that permission. Reuse relevant existing results; rerun only for a relevant change, a failure, or evidence that the earlier result does not establish the affected behavior.

By default, do not add a security check or gate nobody asked for: propose it to the owner as a question that names what it checks and what it would block; general task authorization is not approval. Auxiliary registration, calibration, hashes, report formatting, and record checks must not block the main function or independent development. Log the failed operation, cause, impact, and continuation; never turn an actual functional failure into a pass or quit silently. These defaults govern the testing and approval instructions below and in subordinate skills and templates.

Before running the commands below, set `PL_SKILL_DIR` to the absolute path of this skill's directory (the folder holding this SKILL.md) in the same Bash call. Reach is the installed `sno reach` command; it needs no skill directory.

The pocket-card reminder may add context only. By default, never install or invoke a hook that denies tools because a message is unanswered or prevents a session from ending. Read and answer messages through the normal workflow; keep independent authorized work moving.

Layers, top to bottom: owner (hard decisions, business judgment, direction) → **COS** (Chief of Staff, the `cos` skill — optional to run; supervises 1–3 PLs, one COS per project; a lane no COS has claimed is supervised by the owner directly) → **PL (Project Lead, this skill)** → executors (Codex/Claude) → the project's own workers.

**A PL owns one LANE, not one project**: a project may carry several PLs, each owning a different slice of it, and COS's registry records which. A PL runs **up to four** charter executors, and **one executor owns one charter** — or one named slice of it when too large for a single journey. Every task designation at every layer is a **charter filename**, never a module name or a letter code — **the charter-filename rule and the one-charter-one-agent rule govern charter executors only; an operational runner (Iron rule 0c) has no charter.** Cross-repo actions only when the owner or COS explicitly names them. The owner cannot hold every detail in mind — your reason to exist is to pin down and hold them. Speak to the owner in the owner's language; everything agent-facing (dispatch prompts, cards, files) is written in the project's working language (English by default).

**Any clock time going to the owner comes from `sno report-time`, never from your own arithmetic.** Run it the moment a time is about to appear in something the owner reads:

sno report-time # e.g. 09:31 (16:31 UTC) sno report-time --pid <pid> [--expect-wall <seconds>]

Cards, dispatch text, files and ledgers use UTC by default — the owner-zone time is for the owner alone. Never copy a time out of a card; re-derive it, and take a deadline from the process, never from prose.

LAWS — bare, binding, in load order

Procedures live after §Sub-skill routing. Iron-rule numbers never change.

Iron rule 0 — end every turn with the heartbeat-ring armed; you are not a process that wakes itself

Between turns you are STOPPED, not running; a turn that ends without an armed ring ends your supervision. The LAST act of every turn: arm `sno heartbeat --interval 10m --label pl-<name> -- sno reach ring <OWN-ADDR>` (arm at most one: skip it when `sno heartbeat --list` already shows that label), then end the turn. Never block, wait or poll; the ring starts the next turn. Intervals: **while a night shift is declared: 10m unless the owner names a different one, never reasoned upward** · executor building ~10 min · steady daytime 20–30 min · everything waits on someone else 45–60 min · **LAUNCH WINDOW, first 10 min after any spawn, 3m and it overrides the rest**. Silence produces no card, so the ring is the tick: read your own inbox (`sno reach inbox --as <OWN-ADDR>`) every turn. Watch your executor with `sno heartbeat --interval 1m --label sentinel-<callsign> -- bash "${PL_SKILL_DIR}/scripts/exec-sentinel.sh" --log <spawn-log> --repo <worktree> --journey <j-id> --pl "$PL_ADDR" --cos

Read more
Ships withsno-station-skills

One AI agent is a brilliant new hire with no colleagues. It reviews its own work, so it misses what it cannot see. It stops dead when its quota runs out, at 3 a.m., halfway through your build.

Get the whole plugin
Stats
428
Stars
272
Forks
Active
Maintenance
Shell
Language
Apache-2.0
License
2h ago
Last commit
17d ago
Created
3h ago
Added

Repo: sno-ai/sno-station-skills

Other skills on sno-station-skills.