Skip to main content
Pushes a local markdown file from .versuno/ back to Versuno. If the file has an id in its frontmatter, a new version is created on the existing asset. If not, a new asset is created and its id is written back into the file.

Input

ParameterTypeRequiredDescription
filestringYesPath to the local markdown file. Relative paths resolve from the working directory. Must be inside .versuno/.
changelogstringNoVersion description. Stored with the new version. Only used when updating an existing asset.

Create vs update

The behaviour depends on the file’s frontmatter:
Frontmatter has idActionEndpoint
YesCreate a new versionPOST /assets/{id}/versions
NoCreate a new assetPOST /assets

Asset type inference

When creating a new asset (no id), the type is inferred from the file’s parent directory:
DirectoryInferred type
contexts/context
prompts/prompt
personas/persona
system-prompts/system_prompt
skills/skill
You can override this by setting type explicitly in the frontmatter.

Example: update an existing asset

Prompt:
“Push my edits to .versuno/skills/code-review.md with the message ‘Added review checklist’.”
Tool call:
{
  "file": ".versuno/skills/code-review.md",
  "changelog": "Added review checklist"
}
Response:
Pushed v13 of "Code review checklist" from .versuno/skills/code-review.md
The file’s frontmatter is updated with the new version and updated_at:
---
  id: def456
  type: skill
  title: Code review checklist
- version: 12
+ version: 13
  ...
- updated_at: 2026-04-11T14:22:00.000Z
+ updated_at: 2026-04-19T10:33:12.000Z

Example: create a new asset

Drop a new markdown file into .versuno/prompts/:
---
title: Weekly standup template
tags: [meetings]
---

# Weekly standup template

Each team member answers:
1. What did you ship last week?
2. What are you shipping this week?
3. What's blocking you?
Then:
“Push .versuno/prompts/weekly-standup.md to Versuno.”
Response:
Created new prompt "Weekly standup template" (id: xyz987) from .versuno/prompts/weekly-standup.md
The file’s frontmatter is rewritten to include id, type, version: 1, created_at, and updated_at.

Constraints

  • Path must be inside .versuno/. Files outside this folder are refused. This is a security measure against prompt injection. See Security.
  • Extension must be .md. Other extensions are refused.
  • Max file size: 1 MB. Larger files are refused.

Errors

ErrorCause
Refusing to push: file must live under the project's .versuno/ folderPath is outside .versuno/.
Refusing to push: only .md files are supportedWrong extension.
File too largeOver 1 MB.
File has no content bodyOnly frontmatter, no actual content.
Could not infer asset typeCreating a new asset without a known folder and without type in frontmatter.

See also