Skip to content
prod e051e98
Browse

Intake pipeline

You are here: System docsContent architectureIntake pipeline Use with: Decision tree (shelf + kind) · content-intake skill (.agents/skills/) · AGENTS.md § Inbox processing

Raw material lands in _INBOX/1-New/. Agents process it file-by-file, publish to app/src/content/docs/, then close each sub-topic slice into one folder under _Sources/. _INBOX/2-Research/ holds active WIP only — nothing stays there after a slice is published and closed.

flowchart TD
  drop["1-New drop"] --> wip["2-Research WIP"]
  wip --> perFile["Per-file loop"]
  perFile --> publish["app/src/content/docs"]
  publish --> verify["build GREEN"]
  verify --> close["Close sub-topic slice"]
  close --> sources["_Sources cat/sub/topic"]
  sources --> empty["Remove empty 2-Research path"]
  drop --> skipClose["skip or research-only close"]
  skipClose --> sources
StagePathRole
Drop_INBOX/1-New/<topic>/Unsorted incoming files
WIP_INBOX/2-Research/<topic>/Ledgers, plans, indexes while slice is open
Optional staging_INBOX/3-Ready/<batch>/Frontmatter-ready batch manifests
Publishedapp/src/content/docs/<category>/<subcategory>/<topic>/<shelf>/<kind>/…Reader-facing library
Closed archive_Sources/<category>/<subcategory>/<topic>/All material for a closed slice — one folder

See _Sources/README.md in the repo root for the topic map and bundle schema.


Phase A — Intake mode (per file, before writing)

Section titled “Phase A — Intake mode (per file, before writing)”

Run in order; stop at the first match.

  1. Noise — binary junk, duplicate download (1)/(2), operational artifact → skip (ledger + skip_reason).
  2. Agent config — skill, hook, MCP, agent definition → extract to .agents/ (+ IDE mirrors); not app/src/content/docs/.
  3. Corpus check — Phase B → new · enrich · research-only.
  4. Research-only close — no app publish; on slice closure → _Sources/ only.
  5. Else — Phase C (shelf + kind) then author.

Invoke content-intake for the per-file loop. After Phase C, dispatch starlight-content-author + matching type-* skill (.agents/skills/types/README.md). CodeCanyon corpus: also specialized-codecanyon-laravel.


StepAction
1Map drop to category / subcategory / topic (topic map in _Sources/README.md and app/src/taxonomy.registry.yaml)
2Search published — grep/glob app/src/content/docs/** for slug keywords, category:, subcategory:, topic:, collection:, tags:, phase/step names
3Search processed — glob _Sources/<cat>/<sub>/**/COVERAGE.md for prior rows on the same source path
4Search WIP_INBOX/2-Research/<topic>/COVERAGE.md if slice still open
5MCP (optional) — search_library hybrid for semantic overlap
6Decide

When laravel/codecanyon/corpus/ adds files for a phase that already has published playbook steps under tech-stack/laravel/codecanyon/build/playbooks/, default to enrich, not a parallel playbook.

  • Map source path → Admin-Local folder table in specialized-codecanyon-laravel skill (routing-table.md).
  • Residoro A-Consolidated/ wins over Custojo duplicates.
  • Cross-check COVERAGE.md rows and published step slugs before creating new pages.

Use the decision tree for shelf, then kind.

Reader momentKindTypical path
Full multi-phase executePlaybook steptech-stack/laravel/codecanyon/build/playbooks/…
One operation, commands onlyRunbooktech-stack/laravel/codecanyon/build/runbooks/…
Verify listChecklisttech-stack/laravel/codecanyon/build/checklists/…
Why / mental modelConcept or handbooktech-stack/laravel/codecanyon/learn/handbooks/…
Read onceGuidetech-stack/laravel/codecanyon/learn/guides/…
GlanceCheatsheettech-stack/laravel/codecanyon/resources/cheatsheets/…
Copy / fillTemplate or kittech-stack/laravel/codecanyon/resources/templates/… · tech-stack/laravel/codecanyon/resources/kits/…
Raw research onlyresearch-onlycloses to _Sources/

CodeCanyon override order: skip bucket → playbook → runbook → checklist → concept → cheatsheet → template → guide → else propose type.

After shelf + kind, assign metadata per collections, categories, tags and physical path per path layout. If the topic does not exist, add it to app/src/taxonomy.registry.yaml before publishing.


  1. Plan card (required per file) — source · mode · primary_type · primary_target · also_extract · status.
  2. Author — one primary target; peels link back; no verbatim duplicate across types.
  3. Verify — writing-style QC, visuals warrant test, doc-build-verifier, npm run build GREEN.
  4. Close slice — move entire bundle to _Sources/<category>/<subcategory>/<topic>/ (COVERAGE.md, indexes, plans, manifests, originals/).
  5. Write _manifest.md — closure date, agent id, published URLs, slice id.
  6. Remove empty 2-Research/<topic>/ path; trim 1-New/ copies when duplicates live under _Sources/.../originals/.
  7. Dedup losers — move to _Sources/<category>/<subcategory>/<topic>/ (topic = dedup event slug under the live slice’s cat/sub; never hard-delete).

Laravel: close per sub-topic slice (e.g. setup-new-01-ai-system), not the whole corpus at once.


Inline in the ledger row on clear routes; YAML in 2-Research/<topic>/plans/ or 3-Ready/<batch>/INTAKE-MANIFEST.md when ambiguous.

source: <inbox path or published URL when enriching>
mode: new | enrich | audit | skip
primary_type: playbook-step | runbook | guide | …
primary_target: <topic-first published slug path>
also_extract: [<peel targets>]
status: partial | covered | skip
skip_reason: <required if skip>

Plan the file, then write it — never freeze an entire folder in plan-only mode.


  • Decision tree — shelf + kind for one item
  • Path layout — published folder shape
  • _INBOX/README.md — drop-zone stages
  • _Sources/README.md — archive topic map