GitHub Lead Gen
Purpose
Find GitHub repository candidates for codex-profiles, dedupe them against
the outreach tracker, and hand them off for later qualification. This skill only handles
candidate discovery and shallow intake.
Required Context
Before searching, read current product positioning from README.md, policy
gates from ops/outreach/launch.md, and live distribution state from the
outreach tracker.
Load references/search-patterns.md for approved search lanes and example
queries.
Boundaries
- Create or update tracker
Targets only.
- Dedupe against existing tracker targets before creating records.
- Use
Log.Workflow = github-lead-gen for every meaningful intake decision.
- Set
Next Action = Run lead qualification on every accepted candidate.
- Record only a shallow candidate reason; do not assign final ICP.
- Do not draft PRs, issues, comments, emails, DMs, forum posts, or listing submissions.
- Do not contact externally.
- Do not change
ops/outreach/launch.md unless the user explicitly asks for a
repo-local handoff.
Accepted Input
- A new repository candidate with no matching tracker target, or an existing
target that needs shallow lead-generation evidence refreshed.
- Do not overwrite a qualified or submitted target's
Status, ICP decision, or
phase-specific Next Action.
- Every accepted new target leaves this phase as
Status = Backlog and
Next Action = Run lead qualification.
Tracker Protocol
Create one unique run-<UTC-timestamp>-<random-suffix> value and use it as
<run-id> for the whole invocation. Start with the complete ledger:
node scripts/outreach-tracker.mjs list --json
For an existing target, claim it before changing fields. For a new target,
atomically create the shallow row first, then claim it before adding evidence or
logging the handoff:
node scripts/outreach-tracker.mjs upsert <key> --name "<name>" \
--channel "<channel>" --status Backlog \
--next-action "Run lead qualification" --notes "<candidate reason and source>"
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, record the stable phase label and always release,
including on failure:
node scripts/outreach-tracker.mjs log --target <key> \
--workflow github-lead-gen --action Rechecked \
--result "Candidate captured for lead qualification" --link "<evidence-url>"
node scripts/outreach-tracker.mjs release <key> --by <run-id>
Workflow
- Search GitHub using the approved lanes in
references/search-patterns.md.
- Keep repository-first candidates only; ignore startup, funding, event, and
social-only surfaces.
- For each candidate, capture the repository URL, likely channel, shallow
reason, evidence URL, and duplicate key.
- Search tracker
Targets by deterministic key and repository URL using the
tracker; do not maintain a side ledger.
- If an existing target is found, update only stale lead-gen fields and append
a
github-lead-gen log entry.
- If no target exists, create a
Targets record with:
Key: deterministic slug such as gh-owner-repo,
awesome-owner-repo, or if-owner-repo.
Channel: best existing lead-gen channel, usually Awesome-List PR,
Issue-First, Directory, Web, or Manual/Gated.
Status: Backlog only for plausible repository leads awaiting
qualification; otherwise skip.
Priority: leave blank unless the repository is obviously Codex-specific.
Next Action: Run lead qualification.
Notes: shallow candidate reason and source query.
- Stop after tracker intake. The next workflow is lead qualification.
Output
Return a concise handoff:
- Candidates added.
- Existing targets updated.
- Duplicates skipped.
- Search lanes tried.
- Any tracker or GitHub access blockers.
1---2name: github-lead-gen3description: Use when running GitHub lead generation for codex-profiles. Finds repository candidates and performs shallow tracker intake before lead qualification. Not for drafting, outreach, or monitoring.4---567# GitHub Lead Gen89## Purpose1011Find GitHub repository candidates for `codex-profiles`, dedupe them against12the outreach tracker, and hand them off for later qualification. This skill only handles13candidate discovery and shallow intake.1415## Required Context1617Before searching, read current product positioning from `README.md`, policy18gates from `ops/outreach/launch.md`, and live distribution state from the19outreach tracker.20Load `references/search-patterns.md` for approved search lanes and example21queries.2223## Boundaries2425- Create or update tracker `Targets` only.26- Dedupe against existing tracker targets before creating records.27- Use `Log.Workflow = github-lead-gen` for every meaningful intake decision.28- Set `Next Action = Run lead qualification` on every accepted candidate.29- Record only a shallow candidate reason; do not assign final ICP.30- Do not draft PRs, issues, comments, emails, DMs, forum posts, or listing submissions.31- Do not contact externally.32- Do not change `ops/outreach/launch.md` unless the user explicitly asks for a33 repo-local handoff.3435## Accepted Input3637- A new repository candidate with no matching tracker target, or an existing38 target that needs shallow lead-generation evidence refreshed.39- Do not overwrite a qualified or submitted target's `Status`, ICP decision, or40 phase-specific `Next Action`.41- Every accepted new target leaves this phase as `Status = Backlog` and42 `Next Action = Run lead qualification`.4344## Tracker Protocol4546Create one unique `run-<UTC-timestamp>-<random-suffix>` value and use it as47`<run-id>` for the whole invocation. Start with the complete ledger:4849```sh50node scripts/outreach-tracker.mjs list --json51```5253For an existing target, claim it before changing fields. For a new target,54atomically create the shallow row first, then claim it before adding evidence or55logging the handoff:5657```sh58node scripts/outreach-tracker.mjs upsert <key> --name "<name>" \59 --channel "<channel>" --status Backlog \60 --next-action "Run lead qualification" --notes "<candidate reason and source>"61node scripts/outreach-tracker.mjs claim <key> --by <run-id>62```6364If claim exits 3, skip the target without writing or contacting externally.65After a successful claim, record the stable phase label and always release,66including on failure:6768```sh69node scripts/outreach-tracker.mjs log --target <key> \70 --workflow github-lead-gen --action Rechecked \71 --result "Candidate captured for lead qualification" --link "<evidence-url>"72node scripts/outreach-tracker.mjs release <key> --by <run-id>73```7475## Workflow76771. Search GitHub using the approved lanes in `references/search-patterns.md`.782. Keep repository-first candidates only; ignore startup, funding, event, and79 social-only surfaces.803. For each candidate, capture the repository URL, likely channel, shallow81 reason, evidence URL, and duplicate key.824. Search tracker `Targets` by deterministic key and repository URL using the83 tracker; do not maintain a side ledger.845. If an existing target is found, update only stale lead-gen fields and append85 a `github-lead-gen` log entry.866. If no target exists, create a `Targets` record with:87 - `Key`: deterministic slug such as `gh-owner-repo`,88 `awesome-owner-repo`, or `if-owner-repo`.89 - `Channel`: best existing lead-gen channel, usually `Awesome-List PR`,90 `Issue-First`, `Directory`, `Web`, or `Manual/Gated`.91 - `Status`: `Backlog` only for plausible repository leads awaiting92 qualification; otherwise skip.93 - `Priority`: leave blank unless the repository is obviously Codex-specific.94 - `Next Action`: `Run lead qualification`.95 - `Notes`: shallow candidate reason and source query.967. Stop after tracker intake. The next workflow is lead qualification.9798## Output99100Return a concise handoff:101102- Candidates added.103- Existing targets updated.104- Duplicates skipped.105- Search lanes tried.106- Any tracker or GitHub access blockers.