golemcloud/golem/golem-edit-manifest
- community
Checking that the SKILL.md file is still in the repository.
Editing the Golem Application Manifest (golem.yaml). Use when modifying any section of golem.yaml — components, agents, templates, presets, environments, httpApi, mcp, bridge SDKs, build commands, config, wasiConfig, plugins, files, custom commands, clean paths, retry policies, resource quotas, or secret defaults.
Install
npx vskill@latest install golemcloud/golem/golem-edit-manifestSKILL.md
Editing the Golem Application Manifest (golem.yaml)
The golem.yaml file in the project root is the Golem Application Manifest. It defines the entire application: components, agents, build steps, environments, HTTP/MCP deployments, and more.
Manifest version: The manifestVersion field at the top of the file identifies the application manifest document version. Do not change it.
Top-Level Structure
Components
Components are keyed by namespace:name (e.g., my-app:billing).
Key component fields
| Field | Type | Description | |
|---|---|---|---|
dir | string | Base directory for resolving paths. "." for single-component apps (Go uses "module") | |
templates | string or string[] | Parent template name(s) to inherit from | |
componentWasm | string | Path to the built WASM component | |
outputWasm | string | Path for the final output WASM ready for upload | |
build | array | Build commands (see Build Commands) | |
env | map | Environment variables (string → string) | |
envMergeMode | enum | upsert (default), replace, or remove | |
tools | map | Tool bindings authorized for component owners and inherited by the component's agents | |
toolsMergeMode | enum | upsert (default), replace, or remove | |
plugins | array | Plugin installations | |
pluginsMergeMode | enum | append (default), prepend, or replace | |
files | array | Initial filesystem entries | |
filesMergeMode | enum | append (default), prepend, or replace | |
config | any | Arbitrary configuration passed to agent | |
wasiConfig | map | WASI configuration variables (string → string) | |
wasiConfigMergeMode | enum | upsert (default), replace, or remove | |
customCommands | map | Component-level custom commands | |
clean | string[] | Extra clean paths | |
presets | map | Named presets (see Presets) |
Component Templates
Templates define reusable property layers. Components reference them via templates:.
Templates support the same fields as components except dir. Templates can themselves reference other templates via templates:, but a template may be inherited only through a single path: using two templates that both inherit the same template (e.g. templates: [my-ts, ts-extra] where both inherit ts) is rejected. The same applies to the templates lists of agents and tools. The built-in templates (rust, ts, effect, scala and moonbit) are provided by the CLI; don't define templates with these names.
Templates can declare the guest language of the components built with them via guestLanguage (ts, effect, rust, scala, moonbit or go). The built-in templates declare it, so templates inheriting them don't need to. A custom template that builds a component on its own (without inheriting a built-in template) should declare it, otherwise language-specific CLI features (dependency checks, bridge generation, REPL) are unavailable for its components. The templates applied to a component must not declare different languages.
Agents
Agent types are keyed by PascalCase name. They support the same cascading property fields as components (env, plugins, files, config, wasiConfig) but NOT build-related fields. Agents can also inherit from templates via templates:.
Initial permission cards
Use initialCard on a component or agent, with lowerBound and upperBound containing positive and negative permission-string lists. Tool bindings expose tools but do not grant runtime permission. This fragment assumes the agent already has a Git binding; add its required filesystem permissions separately:
Use primary command and long-option names in manifests and permission shares. Short aliases require effective metadata and are rejected at these context-free boundaries. Runtime derivation resolves aliases before attenuation and freezes their meaning durably.
Tool command paths match exactly. . means the root command, and whole-resource * means any invocation; an empty resource is not an alternative. Flags are unordered requirements, positionals are ordered prefixes, and extra arguments do not defeat a match. Thus status allows that command with arguments, not only an empty argument list. Denying status --short --null blocks both flags together even when reordered or accompanied by extras.
Attach option values with =. Inside a value, * matches zero or more non-slash characters and ** can cross slashes. /workspace/** includes /workspace/project/src, but not /workspace without its slash; matching does not normalize paths. Quote spaces (--message="two words") or empty values (--message=""), and backslash-escape literal stars. Preserve those escapes through YAML or JSON encoding.
Repeated options retain every occurrence. A positive --include=/workspace/** requires one matching value, not an all-values allowlist; use a negative --include=/private/** to block any matching private value. Repeating a positive requirement in a ceiling does not change this rule. Count requirements retain multiplicity. Opaque streams cannot satisfy restricted positive value patterns and cannot evade a potentially matching denial; authorization never drains streams. Derivation must narrow positives and retain or strengthen denials on both bounds.
Config and WASI Config
The config field accepts arbitrary YAML values (objects, arrays, scalars) passed as typed configuration to the agent at runtime. The wasiConfig field is a string-to-string map of WASI-level configuration variables.
Both fields follow the cascade hierarchy and support merge modes (wasiConfigMergeMode for wasiConfig).
Cascade / Merge System
Properties cascade from general to specific:
Each level can override or merge with its parent using merge modes:
Presets apply within their owning layer, not after all other layers. Golem resolves the base component, including its template and component presets, before it applies agent overrides and agent presets.
| Property | Merge Mode Field | Type | Default | Options | |
|---|---|---|---|---|---|
env | envMergeMode | map | upsert | upsert, replace, remove | |
wasiConfig | wasiConfigMergeMode | map | upsert | upsert, replace, remove | |
plugins | pluginsMergeMode | vec | append | append, prepend, replace | |
files | filesMergeMode | vec | append | append, prepend, replace | |
build | buildMergeMode | vec | append | append, prepend, replace | |
tools | toolsMergeMode | map | upsert | upsert, replace, remove |
Component tool bindings authorize fresh component owners (including tools-only MCP calls) and default into real agents exported by that component. An agent-only binding does not authorize a fresh component owner. To opt an agent out of an inherited tool, remove it explicitly:
When agents should not receive the defaults, prefer a separate component with no agents as the tool owner.
Presets
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckinggolem-skills/skills/common/golem-edit-manifest/SKILL.md
Popularity
- Repository stars
- 1,595
- Repository forks
- 203
- 7-day trend score
- 37
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/golemcloud/golem/golem-edit-manifest)