Skip to content

Make system skills invokable via slash command and support skill dependencies #1631

Description

@Aaronontheweb

Problem

System skills (skills in .system/) are only loaded implicitly via topic detection in the skill-hint block. They cannot be invoked directly via /skill-name and have no mechanism for declaring dependencies on other skills.

This creates two gaps:

  1. No explicit access — The user cannot type /netclaw-operations to reference the ops manual, or /netclaw-memory to understand memory behavior. These are invisible unless topic detection happens to fire.

  2. No transitive loading — When a skill is loaded, it cannot declare that it also needs other skills. This means context is silently missed when working on compound tasks.

Examples Where This Matters

Example 1: Subagent authoring

When the user starts creating a subagent, subagent-authoring loads. But subagent creation touches audience gating, approval scoping, and daemon configuration — all documented in netclaw-operations. Without transitive loading, the agent may miss critical context about how approvals and audience policies affect subagents.

Ideal behavior: subagent-authoring declares requires: [netclaw-operations] and both load.

Example 2: Skill authoring

When creating a new skill, skill-authoring loads. But the skill may need to understand how skills are discovered, how external sources work, or how MCP tool routing interacts with skills — all in netclaw-operations/skills.md.

Ideal behavior: skill-authoring declares requires: [netclaw-operations] and both load.

Example 3: Memory troubleshooting

When debugging memory issues, netclaw-memory loads. But the user may also need diagnostics info from netclaw-operations/diagnostics.md to check embedding status, daemon health, or audience gating.

Ideal behavior: netclaw-memory declares requires: [netclaw-operations] for the diagnostics reference.

Example 4: Explicit reference

The user types /netclaw-operations to review how scheduling works before setting up a reminder. Currently this is a no-op because system skills are not slash-invokable.

Ideal behavior: The skill loads and the agent summarizes the relevant section.

Proposed Solution

1. Make system skills discoverable and invokable

Allow skills in .system/ to appear in slash command completion and be invocable via /skill-name. This gives explicit access to foundational documentation.

2. Add skill dependency metadata

Support a metadata.requires field in skill frontmatter:

---
name: subagent-authoring
description: "How to create and troubleshoot file-defined subagents..."
metadata:
  requires:
    - netclaw-operations
  author: netclaw
  version: "1.3.2"
---

When a skill loads, the daemon automatically loads all requires dependencies first (cycle detection included). Dependencies are loaded in topological order.

3. (Optional) Make dependencies transitive

If skill A requires skill B, and skill B requires skill C, loading A loads B and C. This keeps the dependency graph simple — each skill only declares its direct needs.

Implementation Notes

  • Cycle detection: Reject circular dependencies at load time with a clear error.
  • Performance: Dependencies load once per session and are cached. No repeated fetches.
  • Backwards compatibility: Skills without requires work exactly as today. This is purely additive.
  • System vs user skills: The same mechanism applies to both — a user skill can require a system skill and vice versa.

Why This Matters

Right now the agent has to "guess" which system skills are relevant to a task. If it forgets to load one, it works with incomplete context. Explicit dependencies make the knowledge graph deterministic and auditable — the user can see exactly what context the agent is working with and why.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestskillsSkill loading, handling, authoring, indexing, and evals.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions