dimcode-linux-arm64
Advanced tools
| interface: | ||
| display_name: "Dim Workflow" | ||
| short_description: "Create or edit reusable Dim workflows" | ||
| default_prompt: "Use $dim-workflow when creating, modifying, or saving reusable Dim workflow scripts. Do not use it for normal workflow execution." | ||
| policy: | ||
| allow_implicit_invocation: true |
| --- | ||
| name: dim-workflow | ||
| description: Use when the user asks to create, modify, or save a reusable Dim workflow script. This skill explains the Dim workflow file contract and where saved workflow files must live. Do not use it for running, stopping, opening, revealing, or checking workflow runs. | ||
| --- | ||
| # Dim Workflow | ||
| Use this skill only for authoring reusable Dim workflow scripts. | ||
| ## When To Use | ||
| Use this skill when the user asks to: | ||
| - Create a reusable workflow. | ||
| - Modify an existing saved workflow. | ||
| - Save a conversation-generated workflow script for later reuse. | ||
| Do not use this skill when the user only wants to: | ||
| - Run `/workflow <name>`. | ||
| - Add runtime args to a workflow command. | ||
| - Stop, open, reveal, or inspect a workflow run. | ||
| - Check workflow progress. | ||
| ## Saved Workflow Location | ||
| Saved workflows live under: | ||
| ```text | ||
| <workflowDataDir>/workflows/saved/ | ||
| ``` | ||
| Desktop defaults: | ||
| ```text | ||
| DIMCODE_HOME=~/.dimcode/v2 | ||
| workflowDataDir=<DIMCODE_HOME>/data | ||
| saved workflows=~/.dimcode/v2/data/workflows/saved/ | ||
| ``` | ||
| If the configured `workflowDataDir` is known, use that absolute path. | ||
| If it is not known, say that the workflow data directory is missing and ask for it. Do not guess a project-local path and do not save reusable workflows under the current repo. | ||
| ## File Contract | ||
| Create one file per workflow: | ||
| ```text | ||
| <workflowDataDir>/workflows/saved/<workflowName>.mjs | ||
| ``` | ||
| The file must export `meta` and default-export an async workflow function: | ||
| ```js | ||
| export const meta = { | ||
| name: "example-workflow", | ||
| description: "Short user-facing description", | ||
| } | ||
| export default async function workflow(api) { | ||
| api.phase("Start") | ||
| api.log("Running workflow") | ||
| return { ok: true } | ||
| } | ||
| ``` | ||
| Rules: | ||
| - `meta.name` must be a non-empty unique workflow name. | ||
| - `meta.description` must be non-empty. | ||
| - Use `.mjs` when the workflow imports local helpers. | ||
| - `.js` and `.ts` are only for self-contained scripts that the Dim runtime can compile. | ||
| - Use `api.tool()` for current-session tools and `api.agent()` for child agents. | ||
| - Keep workflow files trusted and explicit; do not hide required inputs in hard-coded local paths. | ||
| After writing or modifying a saved workflow file, tell the user to refresh the Desktop workflow list so the runtime reloads `workflows/saved/`. |
@@ -32,4 +32,6 @@ # Installing and updating Dim plugins | ||
| absolute root. | ||
| - **MCP servers** — read from `.mcp.json` (or the inline `mcpServers` object) and merged into | ||
| the MCP runtime. Server ids are namespaced `plugin:<plugin-name>/<serverId>`. | ||
| - **MCP servers** — read from the `.mcp.json` file named by the manifest `mcpServers` field and | ||
| merged into the MCP runtime. An inline `mcpServers` object in `plugin.json` itself is not | ||
| supported — Dim silently ignores it (no error), so the component never loads. Server ids are | ||
| namespaced `plugin:<plugin-name>/<serverId>`. | ||
@@ -61,1 +63,6 @@ ## Toggling components | ||
| source) or by editing the on-disk copy under `~/.agents/plugins` for local tweaks. | ||
| The desktop app also has a separate Plugin Store tab that installs from a hosted marketplace | ||
| (a zip archive, not a git clone) and marks the install with its own `.dimcode-market.json` | ||
| provenance file instead of `dim-install.json`. That path is unrelated to plugin *creation* — | ||
| it only matters if you're pointing a user at how to distribute a finished plugin. |
| # Plugin manifest spec (`.claude-plugin/plugin.json`) | ||
| Dim recognizes a plugin by the presence of `.claude-plugin/plugin.json` at the plugin root. | ||
| It parses only the fields below; any other field is ignored. Keep the manifest minimal and | ||
| valid. | ||
| Dim recognizes a plugin by the presence of `.claude-plugin/plugin.json` at the plugin root (it | ||
| also accepts the Codex-format `.codex-plugin/plugin.json` at the same root — this skill always | ||
| scaffolds the Claude format, which both Dim and Claude Code read). It parses only the fields | ||
| below; any other field is ignored. Keep the manifest minimal and valid. | ||
@@ -93,7 +94,21 @@ ```json | ||
| Only these event names are recognized: `SessionStart`, `SubagentStart`, `PreToolUse`, | ||
| `PermissionRequest`, `PostToolUse`, `PreCompact`, `PostCompact`, `UserPromptSubmit`, | ||
| `SubagentStop`, `Stop`. An unrecognized event name is not a partial failure — Dim drops every | ||
| hook in that `hooks.json` file (logs a warning, registers nothing). Do not invent event names; | ||
| when unsure which event fits, ask rather than guess. | ||
| `type` must be the literal string `"command"` and `command` must be a non-empty string; that is | ||
| the only spec shape Dim parses. Plugin hooks run with the same full host environment as the | ||
| user's own hooks (not a restricted subset), so a plugin hook can read provider keys/tokens from | ||
| the process env — call this out to the user if the plugin's hook touches secrets. | ||
| ### MCP servers | ||
| `mcpServers` points to an `.mcp.json` file. Server ids are namespaced as | ||
| `plugin:<plugin-name>/<serverId>`. Command paths support the same `${CLAUDE_PLUGIN_ROOT}` | ||
| substitution. The referenced `.mcp.json` has this shape: | ||
| `mcpServers` points to an `.mcp.json` file — a relative path string, never an inline object (an | ||
| inline `mcpServers` object in `plugin.json` is silently ignored, not an error). Server ids are | ||
| namespaced as `plugin:<plugin-name>/<serverId>`. Command paths support the same | ||
| `${CLAUDE_PLUGIN_ROOT}` substitution (it resolves through the same `${VAR}` template mechanism as | ||
| any other env var, so other `${VAR}` references also resolve against the host environment). The | ||
| referenced `.mcp.json` has this shape: | ||
@@ -112,11 +127,24 @@ ```json | ||
| `type: "http"` is also supported (`{"type": "http", "url": "...", "headers": {...}}`, optionally | ||
| `"auth": {"type": "bearer", "token": "..."}`); `sse` / `streamable-http` are not supported. | ||
| ## Validation notes | ||
| - `name` must be a non-empty string; the folder name must match it. | ||
| - `version`, when present, must be strict semver. | ||
| - `name` must be a non-empty string; the folder name must match it. Dim does not verify this | ||
| invariant itself — for a locally-placed plugin, mismatched folder/`name` silently uses the | ||
| folder name for skills/hooks/mcp resolution while the manifest `name` becomes only a display | ||
| label. Keep the two in lockstep. | ||
| - `version`, when present, must be strict semver by this skill's convention. Dim's runtime does | ||
| not itself validate `version` — it accepts any non-empty string — so this rule is a | ||
| authoring-quality convention, not something a load failure would confirm. | ||
| - `interface.logo` and any declared component path must point to real files/directories inside | ||
| the plugin. | ||
| - Sub-skill `SKILL.md` files must have non-empty `name` and `description` frontmatter. | ||
| - The manifest `skills` field only toggles a UI "has skills" indicator; skill discovery always | ||
| scans `<plugin-root>/skills` regardless of this field's value or presence. Keep skills at | ||
| `./skills/` — pointing `skills` elsewhere does not relocate discovery. | ||
| - Sub-skill `SKILL.md` files must have non-empty `name` and `description` frontmatter, and a | ||
| non-empty body after the closing `---`. A frontmatter-only file with no body is silently | ||
| dropped (not an error) — the skill just never appears. | ||
| - The manifest must not contain `[TODO: ...]` placeholders. | ||
| Run `scripts/validate_plugin.py <plugin-path>` before handing back a generated plugin. |
+1
-1
| { | ||
| "name": "dimcode-linux-arm64", | ||
| "version": "0.2.17", | ||
| "version": "0.2.18-beta.0", | ||
| "description": "dimcode binary for Linux ARM64", | ||
@@ -5,0 +5,0 @@ "os": [ |
Sorry, the diff of this file is not supported yet
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
168542268
0409
0.49%