
Knowledge Intake
Promote mature evergreen notes from a digital-garden corpus into GitHub Discussions so knowledge survives sessions and collaborators can discover it.
Overview
Knowledge-intake is an agent skill most often used in Build (also Operate) that promotes evergreen corpus entries to GitHub Discussions for cross-session discovery.
Install
npx skills add https://github.com/athola/claude-night-market --skill knowledge-intakeWhat is this skill?
- Evergreen-only gate: seedling and growing entries cannot be promoted
- Default-on confirmation prompt with explicit opt-out via "n"
- GraphQL lookup for repo node ID and `knowledge` discussion category slug
- Supports update flow when `discussion_url` already exists on the entry
- Runs during knowledge-librarian corpus review
- Four maturity levels defined: seedling, growing, evergreen, and evergreen with existing discussion_url
- Only evergreen maturity unlocks Promote or Update Discussion actions
- GraphQL query fetches up to 25 discussion categories to resolve slug knowledge
Adoption & trust: 1 installs on skills.sh; 304 GitHub stars; 2/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
What problem does it solve?
Your best notes stay trapped in repo files or agent context and never reach contributors who only watch GitHub Discussions.
Who is it for?
Repos with a digital-garden corpus, a knowledge-librarian agent workflow, and a GitHub Discussions “Knowledge” category configured.
Skip if: Wiki-only teams, non-GitHub hosts, or notes that are still seedling/growing maturity.
When should I use this skill?
During knowledge-librarian review when a corpus entry has `maturity: evergreen` and you want GitHub Discussion promotion or update.
What do I get? / Deliverables
Eligible evergreen entries become categorized GitHub Discussions with optional updates when `discussion_url` is already set, linked back from the corpus metadata.
- Published or updated GitHub Discussion in the Knowledge category
- Corpus metadata linkage via `discussion_url` when applicable
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Knowledge intake sits where you curate and publish project documentation; it is the first shelf for corpus-to-Discussion promotion even though it supports ongoing ops. Docs is the right subphase because the artifact is published, categorized knowledge—not application code or deploy config.
Where it fits
After a corpus entry hits evergreen, publish it to the Knowledge discussion category for the team.
Update an existing Discussion when the corpus entry changes but already has `discussion_url`.
Surface stable playbooks as discussions so new contributors find them without reading the whole corpus tree.
Archive decision records from agent sessions into discoverable discussion threads linked from YAML front matter.
How it compares
Promotion workflow for evergreen docs—not a full CMS, search indexer, or arbitrary social cross-posting skill.
Common Questions / FAQ
Who is knowledge-intake for?
Maintainers of agent-oriented knowledge corpora who want evergreen write-ups surfaced in GitHub Discussions without manual copy-paste.
When should I use knowledge-intake?
Use it in Build/docs when finalizing evergreen articles; in Operate/iterate when refreshing promoted threads; and in Grow/content when turning internal learnings into public discussion threads.
Is knowledge-intake safe to install?
It uses the GitHub CLI and GraphQL against your repository—review the Security Audits panel on this page and confirm `gh` auth scopes before running promotion.
SKILL.md
READMESKILL.md - Knowledge Intake
# Discussion Promotion Promote evergreen knowledge-corpus entries to GitHub Discussions for cross-session and cross-contributor discovery. ## When This Module Applies During the knowledge-librarian's review of corpus entries, when an entry has reached **evergreen** maturity in the digital garden lifecycle. ## Eligibility Rules | Maturity | Action Available | |----------|-----------------| | Seedling | No promotion option | | Growing | No promotion option | | Evergreen | "Promote to Discussion" | | Evergreen and has `discussion_url` | "Update Discussion" | ## Promote to Discussion ### Step 1: Confirm Eligibility Check the corpus entry's maturity field: ```yaml maturity: evergreen # Required for promotion ``` If maturity is not `evergreen`, do not present the promotion option. ### Step 2: Confirm Promotion (Default: Publish) ``` This entry has reached evergreen maturity. Publishing to GitHub Discussions. [Y/n] ``` Publishing is the default action. If the user explicitly declines ("n"), skip all subsequent steps. ### Step 3: Resolve Repository and Category IDs ```bash # Get repository node ID and "knowledge" category ID gh api graphql -f query=' query($owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { id discussionCategories(first: 25) { nodes { id slug } } } }' -f owner="OWNER" -f repo="REPO" ``` Find the category nodeID where `slug` equals `"knowledge"`. If the "Knowledge" category doesn't exist, warn and skip: ``` ⚠ "Knowledge" discussion category not found. Skipping promotion. ``` ### Step 4: Create the Discussion ```bash gh api graphql -f query=' mutation($repoId: ID!, $categoryId: ID!, $title: String!, $body: String!) { createDiscussion(input: { repositoryId: $repoId, categoryId: $categoryId, title: $title, body: $body }) { discussion { number id url } } }' -f repoId="$REPO_ID" -f categoryId="$CATEGORY_ID" \ -f title="[Knowledge] $ENTRY_TITLE" \ -f body="$BODY" ``` **Title format**: `[Knowledge] <entry title>` **Body structure** (keep concise, link to local corpus for full details): ```markdown ## Topic <Entry title / topic> ## Summary <Key points from the corpus entry — max 500 words> ## Source <Original source URL or session reference> ## Tags <Comma-separated tags from the entry> --- *Maturity: Evergreen | Local corpus: `<relative path to corpus entry>`* *Promoted from knowledge-corpus on YYYY-MM-DD* ``` ### Step 5: Apply Labels Apply labels matching the entry's tags. Common labels: - `knowledge`: always applied - `evergreen`: always applied - Entry-specific tags (e.g., `graphql`, `python`, `architecture`) ### Step 6: Update Local Corpus Entry Add a `discussion_url` field to the corpus entry: ```yaml discussion_url: https://github.com/OWNER/REPO/discussions/NUMBER discussion_number: NUMBER promoted_at: YYYY-MM-DDTHH:MM:SSZ ``` ## Update Discussion When a corpus entry already has a `discussion_url` field (previously promoted), offer "Update Discussion" instead of "Promote": ``` This entry was previously promoted to Discussion #42. Updating it. [Y/n] ``` ### Update Flow 1. Extract the Discussion nodeID from `discussion_url` or `discussion_number` 2. Get the existing Discussion's nodeID: ```bash gh api graphql -f query=' query($owner: String!, $repo: String!, $number: Int!) { repository(owner: $owner, name: $repo) { discussion(number: $number) { id } } }' -f owner="OWNER" -f repo="REPO" -F number=$DISCUSSION_NUMBER ``` 3. Update the Discussion body: ```bash gh api graphql -f query=' mutation($discussionId: ID!, $body: String!) { updateDiscussion(input: { discussionId: $discussionId, body: $body }) { discussion { id url updatedAt } } }' -f discussionId="$DISCUSSION_ID" -f body="$UPDATED_BODY" ``` 4. Update the local corpus entry's `promoted_at` timestamp. ## Token Conservation - Discussion body: max 500 words (link to local file for full content) - Do NOT duplicate the entire c