mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-16 08:06:24 +03:00
Add DeepSeek Harness as a supported skills provider (#746)
* Add DeepSeek Harness as a supported skills provider npx impeccable install now detects ~/.dsh (or $DSH_HOME when it sits under home) and installs into ~/.dsh/skills, the user-level skill root DeepSeek Harness scans, with project-level .dsh/skills on the same layout as other providers. Aliases: dsh, deepseek, deepseek-harness. Engine: PROVIDER_DIRS / aliases / display / input order / global hint, $DSH_HOME-aware user skills dir, provider id resolution from the skill dir, pin harness dirs, bundle path normalization for hashing. Build: dsh transformer target emitting the frontmatter DeepSeek Harness reads (user-invocable, license, compatibility, metadata; unknown keys are ignored there) with no emitHooks (DSH hooks are in-process plugins, not on-disk manifests) and no agentFormat (no documented on-disk subagent format); placeholders (AGENTS.md config file, ask_user_question tool, / command prefix), provider block tags, universal README entry. Docs: HARNESSES.md row and frontmatter column, CLI-CONTRACT constants, README/DEVELOP/AGENTS provider lists. Validation: cargo test --workspace; node scripts/run-tests.mjs core (138 pass); bun run build (19 providers, dist/dsh artifact verified); engine smoke against a fake HOME with a local bundle: install --providers=dsh --scope=global, auto-detected install, and update all resolve the .dsh provider. Generated provider output intentionally omitted per repo policy; the sync workflow regenerates tracked .dsh/skills after merge. Prepared with AI assistance (DeepSeek Harness coding agent). * Address review: DSH_HOME-only detection, generated-output pathspecs - Detect DeepSeek Harness through the resolved $DSH_HOME (fallback ~/.dsh) instead of gating on a fixed ~/.dsh path, so a DSH_HOME-only setup is offered by a provider-less install; generalize the two env-relocated config-dir hints (OpenCode, DSH) into one shared probe. - Add .dsh to the sync workflow's GENERATED_PATHS and CI's generated drift check so the tracked .dsh/skills payload is committed and validated. - Cover both behaviors: new install_detection_tests (DSH_HOME-only, default ~/.dsh, refused outside-home override) and a CLI-CONTRACT note on the resolved detection path. Validation: cargo test --workspace; node scripts/run-tests.mjs core (138 pass); engine smoke: DSH_HOME-only fake HOME installs globally into the resolved skills dir. Prepared with AI assistance (DeepSeek Harness coding agent). * Fix DeepSeek Harness home paths on Windows Use native relative-path containment, cover case and drive boundaries, and verify relocated global install/update without changing project skills. Add DSH output coverage and correct the install documentation. AI assistance: Codex, under pbakaus maintainer direction. * Document the CLI limit on external DSH homes Clarify that outside-home manual copies are not detected or updated by the CLI. AI assistance: Codex, under pbakaus maintainer direction. --------- Co-authored-by: Paul Bakaus <paul.bakaus@gmail.com>
This commit is contained in:
co-authored by
Paul Bakaus
parent
f41300b3b2
commit
6ebc24ad66
@@ -641,6 +641,7 @@ This folder contains skills for all supported tools:
|
||||
|
||||
.cursor/ -> Cursor
|
||||
.claude/ -> Claude Code
|
||||
.dsh/ -> DeepSeek Harness
|
||||
.gemini/ -> Gemini CLI
|
||||
.codex/ -> Codex custom agents (Codex skills use .agents/)
|
||||
.agents/ -> Codex CLI
|
||||
|
||||
@@ -44,6 +44,20 @@ export const PROVIDERS = {
|
||||
displayName: 'Gemini',
|
||||
frontmatterFields: [],
|
||||
},
|
||||
dsh: {
|
||||
provider: 'dsh',
|
||||
providerTags: ['dsh'],
|
||||
configDir: '.dsh',
|
||||
displayName: 'DeepSeek Harness',
|
||||
// DeepSeek Harness reads the Agent Skills spec subset (`name`,
|
||||
// `description`, `license`, `compatibility`, `metadata`) plus
|
||||
// `user-invocable` and `disable-model-invocation`; unknown keys are
|
||||
// silently ignored. No hook surface (hooks are in-process plugins, not
|
||||
// on-disk manifests) and no native subagent file format, so no
|
||||
// emitHooks / agentFormat. Global skills live at ~/.dsh/skills
|
||||
// ($DSH_HOME/skills when set), matching the engine's home override.
|
||||
frontmatterFields: ['user-invocable', 'license', 'compatibility', 'metadata'],
|
||||
},
|
||||
codex: {
|
||||
provider: 'codex',
|
||||
providerTags: ['codex'],
|
||||
|
||||
@@ -424,6 +424,12 @@ export const PROVIDER_PLACEHOLDERS = {
|
||||
ask_instruction: 'Ask the user directly to clarify what you cannot infer.',
|
||||
command_prefix: '/'
|
||||
},
|
||||
'dsh': {
|
||||
model: 'DeepSeek',
|
||||
config_file: 'AGENTS.md',
|
||||
ask_instruction: 'STOP and call the ask_user_question tool to clarify.',
|
||||
command_prefix: '/'
|
||||
},
|
||||
'gemini': {
|
||||
model: 'Gemini',
|
||||
config_file: 'GEMINI.md',
|
||||
@@ -524,6 +530,7 @@ export const PROVIDER_BLOCK_TAGS = new Set([
|
||||
'claude-code',
|
||||
'codex',
|
||||
'cursor',
|
||||
'dsh',
|
||||
'gemini',
|
||||
'github',
|
||||
'grok',
|
||||
|
||||
Reference in New Issue
Block a user