GitHub Lead Qualification
Purpose
Decide whether GitHub lead-gen candidates are real fits for codex-profiles,
then update the outreach tracker with evidence and a next phase. This skill
consumes tracker targets whose Next Action = Run lead qualification.
Required Context
Read README.md for current product positioning, ops/outreach/launch.md for
policy gates, and the selected tracker target for live outreach state. Load
references/icp-rules.md before scoring.
Boundaries
- Update tracker
Targets and append Log entries only.
- Consume tracker targets whose
Next Action = Run lead qualification.
- Use
Log.Workflow = lead-qualification for every meaningful decision.
- Assign exactly one of
ICP: yes, ICP: maybe, or ICP: no.
- Set
Priority, Status, Last Checked, Next Action, and evidence.
- Do not discover new leads.
- Do not draft PRs, issues, comments, emails, DMs, forum posts, listing submissions, or maintainer replies.
- Do not contact externally.
Accepted Input
- Consume only
Backlog or Deferred targets whose
Next Action = Run lead qualification.
- Leave ready
ICP: yes targets as Backlog with
Next Action = Run closing draft; leave all other outcomes with a concrete
recheck, blocker, or terminal next action.
- Issue-first is a valid closing-draft route when the target is a truthful fit,
requires an issue before a PR, and has no existing submission.
Tracker Protocol
Create a unique run-<UTC-timestamp>-<random-suffix> <run-id>, list candidate
rows, and inspect each selected row before claiming it:
node scripts/outreach-tracker.mjs list --json
node scripts/outreach-tracker.mjs list --status Backlog --json
node scripts/outreach-tracker.mjs list --status Deferred --json
node scripts/outreach-tracker.mjs get <key> --json
node scripts/outreach-tracker.mjs claim <key> --by <run-id>
If claim exits 3, skip the target without writing or contacting externally.
After a successful claim, use a shell trap or equivalent finally cleanup to
release on every exit path, including partial persistence or logging failure.
After qualification, persist the decision and stable phase log:
node scripts/outreach-tracker.mjs upsert <key> --status "<status>" \
--priority "<P0|P1|P2>" --last-checked <YYYY-MM-DD> \
--next-action "<next phase, blocker, recheck, or terminal action>" \
--notes "<ICP decision, rationale, and evidence>"
node scripts/outreach-tracker.mjs log --target <key> \
--workflow lead-qualification --action Rechecked \
--result "<ICP decision, reason, and next step>" --link "<evidence-url>"
node scripts/outreach-tracker.mjs release <key> --by <run-id>
Target upserts are idempotent by Key, so retry an upsert after a definite
failure. Logs are append-only and each tracker invocation supplies a mutation
operation id, so a transport retry cannot append the same event twice.
Workflow
- Select unqualified GitHub targets whose next action is lead qualification.
- Read the target repository, list, directory, or guidelines enough to judge
fit and contribution route.
- Check GitHub for existing open PRs and issues and the tracker for duplicate
repository URLs or keys before marking a target drafting-ready.
- If an existing submission is open, preserve the target and history, set
Issue Open or PR Open and route the canonical link to monitoring. Do
not create a closing draft.
- If multiple tracker rows describe the same repository, preserve them,
set a concrete dedupe blocker, and route the conflict through
Merge Queue.
- Apply
references/icp-rules.md; record evidence links and the truthful-fit
rationale.
- Set
Status:
Backlog only for ICP: yes with a valid PR-first or issue-first route,
no duplicate open PR or issue, and a concrete next action.
Deferred for ICP: maybe, temporary blockers, gated flows, or
unresolved tracker dedupe conflicts.
Dead for permanent ICP: no mismatches.
- Set
Priority: P0 for direct Codex, agent, or CLI listing fit; P1 for
likely Codex or CODEX_HOME workflow fit; P2 for broader devtool
visibility.
- Set
Next Action = Run closing draft only for ICP: yes targets ready for
drafting. Otherwise set a specific recheck, blocker, or terminal note.
- Append a
Log entry with the decision, reason, evidence URL, and next step.
Output
Return a concise tracker handoff: targets qualified, ICP counts, blockers,
targets ready for closing draft, and any records that need dedupe cleanup.
1---2name: github-lead-qualification3description: Use when qualifying outreach-tracker GitHub lead candidates for codex-profiles after lead generation and before any closing draft. Not for discovery, drafting, outreach, submission, or monitoring.4---567# GitHub Lead Qualification89## Purpose1011Decide whether GitHub lead-gen candidates are real fits for `codex-profiles`,12then update the outreach tracker with evidence and a next phase. This skill13consumes tracker targets whose `Next Action = Run lead qualification`.1415## Required Context1617Read `README.md` for current product positioning, `ops/outreach/launch.md` for18policy gates, and the selected tracker target for live outreach state. Load19`references/icp-rules.md` before scoring.2021## Boundaries2223- Update tracker `Targets` and append `Log` entries only.24- Consume tracker targets whose `Next Action = Run lead qualification`.25- Use `Log.Workflow = lead-qualification` for every meaningful decision.26- Assign exactly one of `ICP: yes`, `ICP: maybe`, or `ICP: no`.27- Set `Priority`, `Status`, `Last Checked`, `Next Action`, and evidence.28- Do not discover new leads.29- Do not draft PRs, issues, comments, emails, DMs, forum posts, listing submissions, or maintainer replies.30- Do not contact externally.3132## Accepted Input3334- Consume only `Backlog` or `Deferred` targets whose35 `Next Action = Run lead qualification`.36- Leave ready `ICP: yes` targets as `Backlog` with37 `Next Action = Run closing draft`; leave all other outcomes with a concrete38 recheck, blocker, or terminal next action.39- Issue-first is a valid closing-draft route when the target is a truthful fit,40 requires an issue before a PR, and has no existing submission.4142## Tracker Protocol4344Create a unique `run-<UTC-timestamp>-<random-suffix>` `<run-id>`, list candidate45rows, and inspect each selected row before claiming it:4647```sh48node scripts/outreach-tracker.mjs list --json49node scripts/outreach-tracker.mjs list --status Backlog --json50node scripts/outreach-tracker.mjs list --status Deferred --json51node scripts/outreach-tracker.mjs get <key> --json52node scripts/outreach-tracker.mjs claim <key> --by <run-id>53```5455If claim exits 3, skip the target without writing or contacting externally.56After a successful claim, use a shell trap or equivalent finally cleanup to57release on every exit path, including partial persistence or logging failure.58After qualification, persist the decision and stable phase log:5960```sh61node scripts/outreach-tracker.mjs upsert <key> --status "<status>" \62 --priority "<P0|P1|P2>" --last-checked <YYYY-MM-DD> \63 --next-action "<next phase, blocker, recheck, or terminal action>" \64 --notes "<ICP decision, rationale, and evidence>"65node scripts/outreach-tracker.mjs log --target <key> \66 --workflow lead-qualification --action Rechecked \67 --result "<ICP decision, reason, and next step>" --link "<evidence-url>"68node scripts/outreach-tracker.mjs release <key> --by <run-id>69```7071Target upserts are idempotent by `Key`, so retry an upsert after a definite72failure. Logs are append-only and each tracker invocation supplies a mutation73operation id, so a transport retry cannot append the same event twice.7475## Workflow76771. Select unqualified GitHub targets whose next action is lead qualification.782. Read the target repository, list, directory, or guidelines enough to judge79 fit and contribution route.803. Check GitHub for existing open PRs and issues and the tracker for duplicate81 repository URLs or keys before marking a target drafting-ready.82 - If an existing submission is open, preserve the target and history, set83 `Issue Open` or `PR Open` and route the canonical link to monitoring. Do84 not create a closing draft.85 - If multiple tracker rows describe the same repository, preserve them,86 set a concrete dedupe blocker, and route the conflict through `Merge Queue`.874. Apply `references/icp-rules.md`; record evidence links and the truthful-fit88 rationale.895. Set `Status`:90 - `Backlog` only for `ICP: yes` with a valid PR-first or issue-first route,91 no duplicate open PR or issue, and a concrete next action.92 - `Deferred` for `ICP: maybe`, temporary blockers, gated flows, or93 unresolved tracker dedupe conflicts.94 - `Dead` for permanent `ICP: no` mismatches.956. Set `Priority`: `P0` for direct Codex, agent, or CLI listing fit; `P1` for96 likely Codex or `CODEX_HOME` workflow fit; `P2` for broader devtool97 visibility.987. Set `Next Action = Run closing draft` only for `ICP: yes` targets ready for99 drafting. Otherwise set a specific recheck, blocker, or terminal note.1008. Append a `Log` entry with the decision, reason, evidence URL, and next step.101102## Output103104Return a concise tracker handoff: targets qualified, ICP counts, blockers,105targets ready for closing draft, and any records that need dedupe cleanup.