Ingest a scrap into the wiki

VerifiedCaution

Adds a new scrap (prompt, URL, or markdown) to the wiki, updates cross-links in related scraps, and runs a sanity check.

Sby Skills Guide Bot
ProductivityAdvanced
11/2/2026
Claude Code
#knowledge-management#wiki#note-taking#cross-linking#markdown

Recommended for

Automated summary

Creates a new scrap in a Scraps wiki from a prompt, URL, or markdown source, links it to related scraps, and checks the result.

Strengths

  • Provides a source-specific workflow for prompts, URLs, and atomic terms, including when to ask a clarifying question.
  • Encourages graph quality with explicit `[[link]]` and `#[[tag]]` conventions and concrete-to-abstract link direction.
  • Includes a familiarity-based max-lines heuristic to keep notes concise and avoid redundant explanation.
  • Handles title collisions with context folders and directs the agent to read 3–8 related scraps before drafting.

Limitations

  • Relies on the external `scraps` CLI and a specific wiki layout; the commands themselves are not detailed.
  • The provided SKILL.md is cut off before the final sanity-check steps, so the advertised verification workflow is incomplete.
  • The length and linking heuristics still require editorial judgment and may not fit every wiki convention.
When to use it

Use it when adding a note, summarizing an article, or filing back a Q&A into an existing Scraps wiki that already uses the `scraps` CLI.

When not to use it

Do not use it for standalone note-taking outside a Scraps wiki or when the required `scraps` CLI and link conventions are unavailable.

Security analysis

Caution
Quality score84/100

The skill is an editorial workflow for a local notes wiki. It uses powerful tools (Bash, network fetch, bulk Grep/Edit) but only for legitimate, well-scoped purposes: querying a documented CLI, fetching user-supplied sources, drafting one Markdown file, and converting plain-text mentions to internal links. There is no exfiltration, no curl|sh, no credential handling, no obfuscated payload, and no instruction to disable safety checks. The residual risk is the usual one for fetch-then-write skills, so 'caution' rather than 'safe'.

Findings
  • •Declares and uses Bash to shell out to the `scraps` CLI; commands shown are read/query/lint only, with no destructive or system-modifying invocations, but agent-authored shell execution is inherently broad.
  • •WebFetch/WebSearch pull in arbitrary user-pasted URLs; fetched page content becomes untrusted input that is then written into wiki files and used to edit existing scraps (indirect prompt-injection surface), though the skill gives no instruction to follow fetched content as commands.
  • •Write/Edit plus Grep-driven bulk edits of existing scraps mean a single invocation can modify many files; scope is bounded (plain-text mention → wiki link) and no deletion or external transmission is instructed.
How this analysis is made

Examples

Add a topic scrap
Add a scrap about retrieval-augmented generation for internal documentation and link it to the relevant notes in my wiki.
Summarize an article URL
Summarize this article as a scrap and connect it to existing scraps on vector databases: https://example.com/vector-db-overview
File back a Q&A
Save this answer as a scrap: We compared pgvector and Qdrant for a small team; pgvector won on operational simplicity, while Qdrant offered better filtering. Link it to our vector database notes.

name: ingest description: Create a new scrap from a source (prompt, URL, or arbitrary markdown), update cross-links in related scraps, and run a sanity check. Use this when the user wants to add a scrap, summarize an article, save synthesized content to the wiki, or file back a Q&A result. allowed-tools: Read, Write, Edit, Bash, WebFetch, WebSearch, Glob, Grep user-invocable: true argument-hint: [source]

Ingest

Add a new scrap to the wiki and integrate it into the existing graph.

Implements Karpathy's Ingest primitive for Scraps: read a source, draft a new scrap, update related scraps with cross-links, and sanity-check the result. A single ingest typically touches the new scrap plus 1–5 existing scraps.

When to use

  • "Write a scrap about X" / "Add a scrap on Y" (prompt source)
  • "Summarize this article" / a pasted URL (web source)
  • "Save this answer as a scrap" / file-back from a query (markdown source)

Source types

| Source | Provided as | First step | | --- | --- | --- | | prompt | user's topic, instruction, or ready-to-use content (e.g., a /query synthesis) | if the input is complete content, use as-is; otherwise gather context (search related scraps) and ask one clarifying question only when scope is unclear | | URL | pasted link | WebFetch <url>, extract title and key content | | term | an atomic term surfaced in discussion (often unknown until just now) | treat the term itself as the title; skip clarifying questions |

Workflow

  1. Identify source and topic

    • URL: WebFetch → use OGP / heading title as initial title
    • prompt: if the input is complete content (e.g., a /query synthesis), use as-is; if it's a topic, ask one clarifying question only when scope is unclear
    • term: the term is the title; do not ask clarifying questions (the discussion already established scope). Proceed to step 2 with the term as the search keyword.
  2. Research existing wiki state

    • scraps search "<keyword>" --json to find related scraps
    • scraps tag list --json to find relevant tags
    • Read 3–8 of the most related scraps by passing each hit's key back: scraps get "<key>" --json
    • Use scraps get "<key>" --json headings first when only the outline is needed
  3. Decide title and ctx

    • Pick a clear, atomic title
    • If the title collides with an existing scrap, add a context folder: scraps/<ctx>/<title>.md
    • ctx depth ≤ 3
  4. Decide max-lines (familiarity heuristic)

    • Count related scraps from step 2 (low: 0–5, medium: 6–15, high: 16+)
    • Low → 5–7 lines (protect working memory)
    • Medium → 10–12 lines (schema is forming, more detail welcome)
    • High → 5–7 lines (avoid redundant explanation; prefer link-rich brevity)
    • Skip this step if the user specified --max-lines explicitly (CLI flag is authoritative)
    • If the user signals depth in conversation ("go deeper" / "longer" / "厚めに" etc.), bump one band upward; "shorter" / "ライトに" etc. bumps downward. Conversation cue overrides the heuristic but stays below the explicit --max-lines flag.
  5. Draft the scrap

    • Plain Markdown with [[link]] for references and #[[tag]] for tags
    • Link vs tag: reference a scrap with [[Title]], never #[[Tag]] (tags are only existing categories from step 2). A [[Title]] must resolve to a real scrap — a concept that should exist but doesn't yet stays plain text, since an unresolved [[Title]] is a broken link (step 7), not a forward reference.
    • Link direction & fidelity (outbound): links flow concrete → abstract — a concrete scrap links out to the abstractions it depends on; the reverse is the anti-pattern (concrete scraps link IN instead, step 6), and siblings link only on a direct, asymmetric relation. From a source, add only what it attests — never a concrete entity it doesn't name (a CVE, product, person), though an abstraction it genuinely instantiates is fine.
    • Record a source URL in the frontmatter sources (- resource: <URL>), not as a body autolink; step 7 asks for the path instead when the wiki already has a page for that source
    • Stay within max-lines
  6. Cross-link inbound mentions (Karpathy's "update related entity and concept pages")

    • Existing scraps that already name the new title in plain text should link IN to it. This is the reverse of step 5's outbound links — here you edit the existing scraps. Discover candidates with Grep, judge each in context, then convert.
    • Discover (Grep, high recall): now that the title is fixed (step 3), Grep the wiki for the literal title across *.md, with surrounding context. scraps search matches key, title, description and tags but never the body, so it cannot find mentions — do not use it for discovery.
    • Judge each hit (review, high precision): Grep is a substring match, so review every hit in context and keep only a standalone-term occurrence of the title. Skip a hit that is merely part of a longer term — title GitHub inside GitHub App / GitHub Actions, or title 状態 inside 状態管理 (Japanese has no word boundaries, so context judgement is mandatory, not a regex \b). If that longer term is itself a scrap or should be one, leave it intact rather than splitting it.
    • Convert: turn each surviving plain-text mention into [[new title]] (use [[new title|surface form]] for an inflected or aliased form). Skip occurrences already inside [[...]]/#[[...]] and skip the new scrap's own file. Do not invent mentions Grep did not find.
    • Cover every scrap that survives review — do not stop at the first one or two.
    • Backlinks are auto-computed by Scraps; explicit reverse links are redundant
  7. Post-write sanity check

    • Tag check: list every #[[tag]] you wrote and confirm each already appeared in the scraps tag list --json from step 2. A tag that was not in that list was almost certainly meant to be a [[link]] — convert it. Add a genuinely new tag only when you deliberately intend a new cross-cutting category. (Broken-link lint cannot catch this: a stray tag is valid syntax, it just creates a single-use tag.)
    • scraps lint --rule broken-link --rule source-has-page (purpose: confirm the new scrap introduced no broken references, and that a source with its own page is named by that page's /<key>.md path)
    • For non-trivial violations, hand off to the lint-rule-handler agent

Wiki-link syntax

| Syntax | Meaning | | --- | --- | | [[Title]] | normal link | | [[Title|Display]] | alias | | [[Ctx/Title]] | context-disambiguated link | | [[Title#Heading]] | heading reference | | #[[Tag]] | tag | | <https://...> | autolink (renders as OGP card) |

[[ ]] and #[[ ]] are disjoint namespaces: [[Title]] references a scrap; #[[Tag]] declares or joins a tag. Using #[[ ]] to point at a scrap does not link — it silently creates a stray single-use tag.

CLI used

  • scraps search <query> --json
  • scraps get <key> [--heading <heading>] --json [fields] (<key> is the scrap's path without .md, as results return it; <name> --ctx <ctx> is still accepted)
  • scraps tag list --json
  • scraps tag backlinks <tag> --json
  • scraps lint --rule <rule>

These commands are shown with --json because this skill consumes structured output — without it Scraps prints human-formatted text that is unstable to parse, so --json is part of the command, not an option. Use scraps <cmd> --help only as a fallback for a rare flag not listed here, not as a routine discovery step; for deeper syntax or spec questions, consult the scraps-llm-wiki-schema agent (it reads the official docs).

Further reading

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/ingest-a-scrap-into-the-wiki-mvj1oca1/download' --output '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md.part' && mv '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md.part' '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Read, Write, Edit, Bash, WebFetch, WebSearch, Glob, Grep

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md' && test -s '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ingest' && cp -R '.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1' '.claude/skills/ingest'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1'

openskills read 'ingest-a-scrap-into-the-wiki-mvj1oca1'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/ingest-a-scrap-into-the-wiki-mvj1oca1/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills