Skip to content
Back to skills

Propose Kb Node

ASecurity

The nothing-fits path for the KB router. When search-kb returns unmatched (a piece of work has no home in the knowledge base), research the gap, draft a properly-shaped node at the right level (new domain, capability, or functionality) following the shelf template and functionality baseline, and emit a proposal for human review. NEVER writes to the KB — it always stops at a review checkpoint; only an approved proposal is written and re-indexed. Use when search-kb reports unmatched, or when a ...

  • 3 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added September 10, 2026
businesspythonbashnode

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add kapilvirenahuja/garura --skill propose-kb-node --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Propose Kb Node?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Propose Kb Node
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kapilvirenahuja-propose-kb-node/badge)](https://www.skillsdirectory.com/skills/kapilvirenahuja-propose-kb-node)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: propose-kb-node
description: The nothing-fits path for the KB router. When search-kb returns unmatched (a piece of work has no home in the knowledge base), research the gap, draft a properly-shaped node at the right level (new domain, capability, or functionality) following the shelf template and functionality baseline, and emit a proposal for human review. NEVER writes to the KB — it always stops at a review checkpoint; only an approved proposal is written and re-indexed. Use when search-kb reports unmatched, or when a play hits work the model does not yet cover.
version: 0.1.0
user-invocable: false
model: sonnet
allowed-tools: Bash, Read, WebSearch, WebFetch
---

# propose-kb-node

The escalation behind `search-kb`. Runs when routing comes back **unmatched** — the
work has no home in the KB. It proposes a new node for the user to review. It does
**not** change the KB.

## Inputs

- `work` — the piece of work that did not route.
- (optional) the weak hints `search-kb` returned (nearest domains/capabilities).

## Procedure

1. **Confirm the gap.** Run `python3 {KB}/kb.py domains` and reason: does the work
   truly fit nowhere, or is it a missing **functionality** under an existing
   capability, a missing **capability** under an existing domain, or a missing whole
   **domain**? Pick the *smallest* level that closes the gap — prefer adding a
   functionality/capability to an existing shelf over inventing a domain.
   - `KB = core/components/memory/knowledge/domains/.pageindex`

2. **Research.** Use WebSearch/WebFetch to ground the draft in real practice — the
   genuine capabilities/functionalities and vocabulary of that area. Capture 2–4
   sources. Do not invent from thin air.

3. **Draft to the template.** Write the node in the locked shelf shape:
   - new **functionality**: `name — what it is`, a maturity ladder OR flat list, and
     a decisive profile condition (`shape.*`/`nfr.*`/`compliance`, or "the floor").
   - new **capability**: the capability + its functionalities (same baseline).
   - new **domain**: a full shelf — stance, "Intents this domain captures", and
     `## Capabilities` with functionalities — matching the existing shelves and the
     functionality baseline.

4. **Emit a proposal** (shape below) and **STOP at review.** Present it to the user.
   Only after explicit approval does a separate write step add it to the KB and run
   `kb.py rebuild`. Until then nothing is written.

## Output — kb_proposal

```yaml
kb_proposal:
  work: "let users file support tickets and live-chat with an agent"
  gap: "no existing domain covers customer support / helpdesk; nearest (notifications,
        collaboration) only touch messaging, not ticketing or agent workflows"
  level: new-domain            # new-domain | new-capability | new-functionality
  parent: null                 # null for new-domain; else <domain> or <domain>.<capability>
  proposed:
    name: support
    title: "Support: how we build it"
    trigger: "the product handles inbound user issues — tickets, live chat, help center"
    draft: |
      <markdown of the proposed node, in the shelf shape — abbreviated is fine>
  sources:
    - "<url or note from research>"
  status: "PROPOSED — awaiting user review; NOT written to the KB"
```

Emit it as JSON. It must validate against `.pageindex/validate_proposal.py`.

## Rules

- **Never write to the KB or rebuild without explicit approval.** Always stop at the
  review checkpoint.
- **Smallest level that fits.** Don't invent a domain when a capability or
  functionality on an existing shelf closes the gap.
- **Ground in research.** Cite sources; follow the shelf template + functionality
  baseline so an approved proposal drops in cleanly.
- **State the gap plainly** — why the existing model didn't cover it.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.