Skip to content

feat(skills): add a body-owned SKILL.md workflow layer #112

Description

Problem

Reusable workflows currently require edits to the always-loaded body prompt or repeated ad hoc instructions. That increases prompt size, requires a server restart, and gives sponsors no supported way to maintain small, reusable operating recipes.

Desired outcome

Add a body-owned skills layer that discovers trusted SKILL.md recipes and activates one explicitly for a single turn when a human invokes it.

Recommended priority: P1.

Scope

  • Discover local and bundled skill roots.
  • Parse bounded YAML frontmatter with safe loading and strict name validation.
  • Support manual /skillname invocation plus /skill list|show|refresh|help.
  • Make local skills override bundled skills by name.
  • Reject symlinks, traversal, malformed metadata, reserved names, and oversized bodies.
  • Audit every activation before emitting effective prompt context.
  • Keep persona-sati observation behavior unchanged.

Non-goals

  • A skills marketplace.
  • Executing scripts or loading arbitrary sidecar files from a skill directory.
  • Agent-initiated semantic routing in the MVP.
  • Letting skills override the non-overridable body prompt.
  • Adding tools or MCP servers dynamically.

Acceptance criteria

  • Valid local and bundled skills load deterministically; local precedence is tested.
  • Manual invocation forwards arguments and injects only the selected skill for one turn.
  • Special commands return bounded, Teams-safe output.
  • Unknown slash commands do not activate a skill.
  • Symlink, traversal, unsafe YAML, malformed metadata, reserved-name, and size-limit cases fail safely.
  • Activation is audit-first and fails closed if the audit write fails.
  • The feature is optional and Entrabot boots normally with no skills directory.
  • Documentation and tests match the plan; full pytest and Ruff gates pass.

Sources and related work

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions