Files
OthmanAdi 50b2784006 feat(dsh): native DeepSeek Harness plugin
DeepSeek Harness (dsh) reads SKILL.md from ~/.agents/skills but ignores
the hooks: frontmatter, so the skill alone loses plan injection, the
write reminder, compaction recovery and the completion gate. Add
.dsh/packages/dsh-planning-with-files, a Cordis plugin bundle (npm name
dsh-planning-with-files; dsh.bundle.patch inserts the row) that does
that work in-process on dsh's lifecycle events: agent/pre-step appends
the framed plan, or the ambiguity notice, to the step that carries the
user's prompt; tools/post-execute attaches the reminder to write, edit
and mutating str_replace_editor calls; agent/session-start with source
compact injects the compaction note and the plan; agent/turn-stopping
steers a gated agent with the gate reason, never a subagent child. The
commands /pwf and /pwf-status and the tools pwf_init, pwf_status and
pwf_check register through ctx.inject on the optional commands and
tools services, so the listeners load in every profile. Every listener
fails open with a ctx.logger.warn.

src/core.ts is a byte-identical copy of the OpenCode plugin's core, so
plan resolution (PLAN_ID binding, .active_plan, newest slug, legacy
root, the fail-closed PWF_PLAN_ROOT pin, nested-root ambiguity),
framing, attestation, the gate counters and init behave exactly as
there. The package targets the published 0.1.5-rc.2 libraries that the
published dsh 0.1.5-rc.2 CLI installs (the libraries' npm latest tags
are stale); against those types the lifecycle source arrives on
agent/session-start, not on agent/created as in the 0.1.6 alpha source.

Vitest drives apply() against a fake Cordis context over real
temporary directories, plus the copied core suite (43 tests). The built
dist/ is ignored like the OpenCode package's.
2026-09-17 23:09:27 +02:00

76 lines
1.6 KiB
Plaintext

# OS files
.DS_Store
Thumbs.db
# Editor files
*.swp
*.swo
*~
.vscode/
.idea/
# Development planning files (meta: I used this skill to build this skill!)
task_plan.md
findings.md
progress.md
research_notes.md
notes.md
# But keep example and template files
!examples/*.md
!examples/**/*.md
!**/templates/*.md
# ClawHub publish/upload folders (managed separately)
clawdhub-publish/
clawhub-upload/
clawhub-changelog.txt
skill-submission-targets.txt
# Claude session files
.claude/
# Keep the skill folder clean
*.log
*.tmp
WIKI_HOME_PAGE.md
DISCUSSION_2_CONTENT.md
# Python bytecode (regenerated locally by pytest and script runs)
__pycache__/
*.pyc
# Parallel planning runtime state (slug-mode plans, active-plan pointer, attestations)
.planning/
.plan-attestation
# Git Bash crash dumps (Windows only, generated on unexpected shutdown)
bash.exe.stackdump
*.stackdump
# plan-it HTML artifact
plan.html
# Personal Claude Code config (do not ship per-developer settings)
CLAUDE.md
# Node.js modules pulled into IDE adapters
node_modules/
# Deferred personal dev/strategy notes (never published)
.dev-notes/
# v3 large banner exceeds GitHub's 100MB hard limit and stays local permanently
media/v3-banner-large.png
# OpenCode: bun installs plugin deps next to .opencode/package.json; the
# plugin package keeps its own tracked package-lock.json and builds to dist/.
.opencode/package-lock.json
.opencode/bun.lock
.opencode/packages/*/dist/
# DeepSeek Harness: the plugin package keeps its own tracked package-lock.json
# and builds to dist/, which npm publish ships and git never tracks.
.dsh/packages/*/dist/