[RFC / Feature Proposal] Built-in Extension Guardrails and Native Meta-Skill for Safe Skill and Plugin Authoring #4586
NitishKashyapR
started this conversation in
Ideas
Replies: 1 comment
|
Great RFC! When handling dynamic plugin/skill installations, evaluating capabilities before execution is critical. We found that pairing AST pattern checks with a deterministic pre-execution policy engine at the proxy layer prevents rogue tool calls without relying on LLM-level safety prompts. How are you planning to handle scope verification for unverified third-party skills? |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
As DeepSeek Harness (dsh) expands its plugin and skill ecosystem, both human developers and autonomous AI agents frequently install, modify, or author extensions. However, small, common configuration mistakes—such as listing a Cordis plugin in package.json's dsh.profile.bundles or declaring { required: true } on a tool's child schema—result in fatal runtime panics during the boot phase (dsh-app-boot), completely bricking the harness.
We propose:
PROBLEM STATEMENT AND FAILURE MODES
When an LLM or user attempts to add a new tool or plugin to DSH, they repeatedly run into three silent pitfalls that cause bootloader crashes:
The Bundle vs. Plugin Ambiguity
What happens: Developers or AI assistants add installed packages (such as @deepseek-ai/dsh-subagent-codex or custom tool plugins) to package.json under dsh.profile.bundles.
Fatal Error:
Error: dsh: profile bundle "@deepseek-ai/dsh-subagent-codex" declares no dsh.bundle in its package.json
Root Cause: dsh.profile.bundles is strictly for layered overlay bundles declaring dsh.bundle.patch, whereas regular plugins belong exclusively in cordis.patch.yml.
Strict JSON Schema Rejection Panics
What happens: Community plugins and LLM-generated tools often use informal schema conventions like { type: "string", required: true } or object additionalProperties.
Fatal Error:
JsonSchemaError: unsupported JSON schema: schema.properties.hits.required is not supported on type "array"...
Root Cause: assertSupportedJsonSchema strictly requires required to only be an array on type: "object" (required: ["prop1"]). When violated, Cordis crashes with an unrecoverable AggregateError.
Duplicate Entry ID Conflicts
What happens: When community overlays re-declare plugins already mounted by base bundles (such as dsh-context, workflow, goal), Cordis throws:
TypeError: duplicate loader entry id:
PROPOSED SOLUTION: NATIVE META-SKILL AND LINTING ENGINE
To turn DSH into a truly self-extending, resilient runtime, we designed and tested a reference meta-skill that instructs the harness agent on safe extension practices.
Proposed Integration: dsh-skill-and-plugin-authoring (SKILL.md)
Skill Frontmatter:
name: dsh-skill-and-plugin-authoring
description: Strict safety protocols, boilerplate templates, and verification guidelines for authoring, installing, and configuring DSH Skills and Cordis Plugins without breaking the harness.
invocation:
modelInvocable: true
userInvocable: true
Core Rules Included in the Skill:
Always verify profile validity before starting the web server:
PROPOSED CLI ENHANCEMENT: dsh doctor / dsh plugin check
In addition to the skill, adding an automated pre-flight checker in the CLI:
Command: dsh plugin check --profile web
Output:
[DSH Validator] Checking profile: web (~/.dsh/profiles/web)
[OK] Profile package.json bundles validated (no orphaned plugins).
[OK] cordis.patch.yml syntax and unique entry IDs verified.
[OK] All registered tool schemas conform to assertSupportedJsonSchema.
[OK] dsh --profile web --dump-config composed cleanly.
Status: SAFE TO BOOT
IMPACT AND WHY DEEPSEEK HARNESS SHOULD ADOPT THIS
REFERENCE IMPLEMENTATION
A fully functional reference of the skill and validation script has been tested on DSH 0.1.1-rc.2:
All reactions