Author and gate owner: Sage (mos-0855). Role files take an optional skills list. The bundle reads each named skill from <dataRoot>/skills-enabled, copies it into the bundle and renders every file into prompt.md between skill-file markers, so the prompt text matches the bundle copy byte for byte. The role's skills together are capped at SKILL_BYTES (64 KiB): the claude adapter passes prompt.md as one argument, and Linux caps one argument at 128 KiB. Symlinks are refused, not followed. The launcher checks the list before a run exists: skill-not-enabled names the activate command, anything else refuses skill-refused. Pi keeps --no-skills; Claude Code keeps --disable-slash-commands and --restricted. The two harness modules and MOSAIC_SKILLS are unchanged. First lists: coder, reviewer, cto and pm, ms-unslop on each.
28 lines
744 B
JSON
28 lines
744 B
JSON
{
|
|
"roleVersion": 2,
|
|
"name": "coder",
|
|
"title": "Coder",
|
|
"contract": "coder.md",
|
|
"tools": ["read", "write", "edit", "bash", "grep", "find", "ls"],
|
|
"network": "api-only",
|
|
"skills": ["ms-unslop", "ms-sdlc", "ms-file-read", "ms-file-write"],
|
|
"authority": {
|
|
"withinRole": ["task.update.assigned", "git.push.working", "review.request", "message.send", "record.write"],
|
|
"crossRole": ["task.scope.change"]
|
|
},
|
|
"credentials": [
|
|
{
|
|
"service": "gitea",
|
|
"scopes": ["write:issue", "write:repository", "read:user"]
|
|
},
|
|
{
|
|
"service": "vikunja",
|
|
"scopes": {
|
|
"tasks": ["read_one", "update"],
|
|
"tasks_comments": ["create"],
|
|
"projects": ["views_buckets_tasks"]
|
|
}
|
|
}
|
|
]
|
|
}
|