mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-10 10:36:35 +00:00
catalog: rebuild at 2026-04-23T17:41:59Z
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# Scarf Template Author
|
||||
|
||||
A Hermes skill that teaches your agent how to scaffold a new Scarf project — and, because Scarf's `.scarftemplate` format is symmetric with a live project on disk, how to shape it so you can publish it to the catalog later if you want.
|
||||
|
||||
## What you get
|
||||
|
||||
Installing this template drops a skill at `~/.hermes/skills/templates/awizemann-template-author/scarf-template-author/SKILL.md` and a minimal "how to use" project in a folder of your choice. Every agent that reads the standard `~/.hermes/skills/` directory — Claude Code, Cursor, Codex, Aider, and the rest of the [agents.md](https://agents.md/) family — picks the skill up automatically.
|
||||
|
||||
## How to use it
|
||||
|
||||
After install, open your agent in any directory and say something like:
|
||||
|
||||
- *"Create a new Scarf project that watches the number of open PRs in my GitHub repo."*
|
||||
- *"Scaffold a Scarf dashboard that tracks daily focus time from my Toggl logs."*
|
||||
- *"Set up a project that runs a cron job to summarise my inbox each morning."*
|
||||
- *"Help me author a Scarf template I can share."*
|
||||
|
||||
The agent will ask four or five questions (purpose, data source, cadence, what to display, any secrets) and then write:
|
||||
|
||||
- `<your-dir>/.scarf/dashboard.json`
|
||||
- `<your-dir>/.scarf/manifest.json` — only if you're going to use a configuration form or want to export later
|
||||
- `<your-dir>/AGENTS.md`
|
||||
- `<your-dir>/README.md`
|
||||
- Optionally a cron job registered via `hermes cron create` (always created paused — you enable it from Scarf's Cron sidebar when ready).
|
||||
|
||||
When it's done, click **+** in Scarf's Projects sidebar and pick the directory. Your dashboard appears. Iterate on it by asking your agent to tweak widgets or add fields.
|
||||
|
||||
## Turning a local project into a shareable template
|
||||
|
||||
Once you're happy with the result, Scarf → Projects → Templates → *Export "<name>" as Template…* produces a `.scarftemplate` anyone can install. The exporter carries the configuration *schema* but never your filled-in values — so your secrets and personal settings stay local.
|
||||
|
||||
## About this template's own dashboard
|
||||
|
||||
The installed project itself is tiny — a single Quick Start text widget and an empty list widget meant to serve as a scratchpad for tracking which scaffolded projects you've created. Its only purpose is to give you a place to land after install and a reminder of the trigger phrases above. The real value is the skill.
|
||||
|
||||
## Reference
|
||||
|
||||
- [Project Templates wiki page](https://github.com/awizemann/scarf/wiki/Project-Templates) — full spec + troubleshooting.
|
||||
- [`awizemann/site-status-checker`](https://awizemann.github.io/scarf/templates/awizemann-site-status-checker/) — a complete, non-trivial example the skill studies and references.
|
||||
- Dashboard / configuration schemas are Swift-authoritative at `scarf/scarf/Core/Models/ProjectDashboard.swift` and `scarf/scarf/Core/Models/TemplateConfig.swift` in the Scarf repo.
|
||||
|
||||
## What this template intentionally is not
|
||||
|
||||
- Not an archetype picker. v1 is blank-slate conversational; pre-baked starters (`monitor`, `dev-dashboard`, `personal-log`, etc.) may land in v1.1 once we see what shapes people ask for most often.
|
||||
- Not a graphical wizard. The conversational agent path is strictly richer than a fixed form, and dogfoods Scarf's agent-first philosophy.
|
||||
- Not a remote-scaffolding tool. It writes files into a directory on the machine where the agent runs; pair with Scarf's remote-server mode if you want to scaffold onto another box.
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"version": 1,
|
||||
"title": "Template Author",
|
||||
"description": "A Hermes skill that helps your agent scaffold new Scarf projects — ask in chat, answer a short interview, and land a working dashboard with the right shape to export as a .scarftemplate later. The Scaffolded Projects list below grows as you use the skill.",
|
||||
"theme": { "accent": "blue" },
|
||||
"sections": [
|
||||
{
|
||||
"title": "Quick Start",
|
||||
"columns": 1,
|
||||
"widgets": [
|
||||
{
|
||||
"type": "text",
|
||||
"title": "Ask your agent",
|
||||
"format": "markdown",
|
||||
"content": "**This project gives you a skill, not a service.** There are no cron jobs running, no dashboards to maintain. The real value lives at `~/.hermes/skills/templates/awizemann-template-author/scarf-template-author/SKILL.md`.\n\n**Trigger phrases** your agent listens for:\n\n- *\"Create a new Scarf project that watches …\"*\n- *\"Scaffold a dashboard to track …\"*\n- *\"Set up a project that runs a daily check on …\"*\n- *\"Help me author a Scarf template.\"*\n\nThe agent will interview you (purpose → data source → cadence → widgets → config → secrets), write `<your-dir>/.scarf/dashboard.json`, `<your-dir>/.scarf/manifest.json`, `<your-dir>/AGENTS.md`, and `<your-dir>/README.md`, then tell you to click **+** in Scarf's Projects sidebar to register the directory.\n\nWhen you're happy with the result, **Projects → Templates → Export** turns it into a `.scarftemplate` you can share.\n\nSee the [Project Templates wiki page](https://github.com/awizemann/scarf/wiki/Project-Templates) for the full spec."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Scaffolded Projects",
|
||||
"columns": 1,
|
||||
"widgets": [
|
||||
{
|
||||
"type": "list",
|
||||
"title": "Projects this skill has built for you",
|
||||
"items": [
|
||||
{ "text": "Nothing yet — ask your agent to scaffold a project and it'll optionally log entries here.", "status": "pending" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Scarf Template Author — Scarf Templates</title>
|
||||
<meta name="description" content="Install this to give your agent a skill that scaffolds new Scarf projects — dashboards, optional configuration schemas, cron jobs, and AGENTS.md — from a short conversational interview. Scaffolded projects are usable locally and cleanly exportable as .scarftemplate bundles.">
|
||||
<link rel="stylesheet" href="../styles.css">
|
||||
<link rel="icon" type="image/png" href="../assets/icon.png">
|
||||
</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<a class="brand" href="..">
|
||||
<img src="../assets/icon.png" alt="" width="40" height="40">
|
||||
<span class="brand-name">Scarf Templates</span>
|
||||
</a>
|
||||
<nav class="site-nav">
|
||||
<a href="..">Catalog</a>
|
||||
<a href="https://github.com/awizemann/scarf">GitHub</a>
|
||||
<a href="https://github.com/awizemann/scarf/blob/main/templates/CONTRIBUTING.md">Contribute</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="detail">
|
||||
<section class="detail-header">
|
||||
<div>
|
||||
<h1>Scarf Template Author <span class="version">v1.0.0</span></h1>
|
||||
<p class="desc">Install this to give your agent a skill that scaffolds new Scarf projects — dashboards, optional configuration schemas, cron jobs, and AGENTS.md — from a short conversational interview. Scaffolded projects are usable locally and cleanly exportable as .scarftemplate bundles.</p>
|
||||
<p class="meta">
|
||||
<span class="author">by <a href="https://github.com/awizemann">Alan Wizemann</a></span>
|
||||
<span class="id">awizemann/template-author</span>
|
||||
<span class="category">developer-tools</span>
|
||||
</p>
|
||||
<p class="tags"><span class="tag">meta</span><span class="tag">authoring</span><span class="tag">skill</span><span class="tag">scaffolding</span></p>
|
||||
</div>
|
||||
<div class="install-actions">
|
||||
<a class="btn btn-primary" href="scarf://install?url=https://raw.githubusercontent.com/awizemann/scarf/main/templates/awizemann/template-author/template-author.scarftemplate">Install with Scarf</a>
|
||||
<a class="btn btn-secondary" href="https://raw.githubusercontent.com/awizemann/scarf/main/templates/awizemann/template-author/template-author.scarftemplate">Download .scarftemplate</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="detail-dashboard">
|
||||
<h2>Live dashboard preview</h2>
|
||||
<p class="detail-dashboard-note">
|
||||
Exactly what you'll see inside Scarf after install. Values shown here are
|
||||
placeholders; the agent updates them each time the cron job runs.
|
||||
</p>
|
||||
<div id="dashboard-preview"></div>
|
||||
</section>
|
||||
|
||||
<section class="detail-config">
|
||||
<div id="config-schema"></div>
|
||||
</section>
|
||||
|
||||
<section class="detail-readme">
|
||||
<h2>README</h2>
|
||||
<div id="readme-body"></div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="site-footer">
|
||||
<p>
|
||||
Scarf is open source:
|
||||
<a href="https://github.com/awizemann/scarf">github.com/awizemann/scarf</a>.
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
<script src="../widgets.js"></script>
|
||||
<script>
|
||||
// Fetch + render dashboard + README + config schema at page load.
|
||||
// Dashboard + README live next to index.html in this template's
|
||||
// detail dir; the config schema comes from the sibling manifest.json
|
||||
// that the build-catalog renderer also copies in.
|
||||
(async function () {
|
||||
const dashboardEl = document.getElementById("dashboard-preview");
|
||||
const readmeEl = document.getElementById("readme-body");
|
||||
const configEl = document.getElementById("config-schema");
|
||||
try {
|
||||
const d = await fetch("dashboard.json").then(r => r.json());
|
||||
ScarfWidgets.renderDashboard(dashboardEl, d);
|
||||
} catch (e) {
|
||||
dashboardEl.textContent = "Could not load dashboard preview.";
|
||||
}
|
||||
try {
|
||||
const md = await fetch("README.md").then(r => r.text());
|
||||
readmeEl.innerHTML = ScarfWidgets.renderMarkdown(md);
|
||||
} catch (e) {
|
||||
readmeEl.textContent = "Could not load README.";
|
||||
}
|
||||
try {
|
||||
// manifest.json may not exist for schema-less templates — that's
|
||||
// fine, we just leave the config section empty.
|
||||
const res = await fetch("manifest.json");
|
||||
if (res.ok) {
|
||||
const manifest = await res.json();
|
||||
ScarfWidgets.renderConfigSchema(configEl, manifest.config);
|
||||
}
|
||||
} catch (e) {
|
||||
// Silent — config-schema display is optional.
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -63,6 +63,37 @@
|
||||
"configurable"
|
||||
],
|
||||
"version": "1.1.0"
|
||||
},
|
||||
{
|
||||
"author": {
|
||||
"name": "Alan Wizemann",
|
||||
"url": "https://github.com/awizemann"
|
||||
},
|
||||
"bundleSha256": "670b2e07ad9bb327c11fa64db1beacf86614a3d388de6fe6e2a19ac957e1346b",
|
||||
"bundleSize": 13889,
|
||||
"category": "developer-tools",
|
||||
"config": null,
|
||||
"contents": {
|
||||
"agentsMd": true,
|
||||
"dashboard": true,
|
||||
"skills": [
|
||||
"scarf-template-author"
|
||||
]
|
||||
},
|
||||
"description": "Install this to give your agent a skill that scaffolds new Scarf projects \u2014 dashboards, optional configuration schemas, cron jobs, and AGENTS.md \u2014 from a short conversational interview. Scaffolded projects are usable locally and cleanly exportable as .scarftemplate bundles.",
|
||||
"detailSlug": "awizemann-template-author",
|
||||
"id": "awizemann/template-author",
|
||||
"installUrl": "https://raw.githubusercontent.com/awizemann/scarf/main/templates/awizemann/template-author/template-author.scarftemplate",
|
||||
"minHermesVersion": null,
|
||||
"minScarfVersion": "2.2.0",
|
||||
"name": "Scarf Template Author",
|
||||
"tags": [
|
||||
"meta",
|
||||
"authoring",
|
||||
"skill",
|
||||
"scaffolding"
|
||||
],
|
||||
"version": "1.0.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<section class="hero">
|
||||
<h1>Pre-packaged projects for Scarf</h1>
|
||||
<p>
|
||||
Browse 1 community template — each ships with a
|
||||
Browse 2 community templates — each ships with a
|
||||
ready-to-install Scarf dashboard, a cross-agent <code>AGENTS.md</code>, optional
|
||||
cron jobs and skills. Click a template to see what it does; one click installs
|
||||
it into Scarf.
|
||||
@@ -33,6 +33,7 @@
|
||||
<main class="catalog">
|
||||
<div class="grid">
|
||||
<a class="card" href="awizemann-site-status-checker/"><h3>Site Status Checker</h3><p class="desc">A daily uptime check for a list of URLs you configure on install. Writes status to status-log.md and updates the dashboard with current counts.</p><div class="meta"><span class="author">Alan Wizemann</span><span class="version">v1.1.0</span></div><div class="tags"><span class="tag">monitoring</span><span class="tag">uptime</span><span class="tag">cron</span><span class="tag">starter</span><span class="tag">configurable</span></div></a>
|
||||
<a class="card" href="awizemann-template-author/"><h3>Scarf Template Author</h3><p class="desc">Install this to give your agent a skill that scaffolds new Scarf projects — dashboards, optional configuration schemas, cron jobs, and AGENTS.md — from a short conversational interview. Scaffolded projects are usable locally and cleanly exportable as .scarftemplate bundles.</p><div class="meta"><span class="author">Alan Wizemann</span><span class="version">v1.0.0</span></div><div class="tags"><span class="tag">meta</span><span class="tag">authoring</span><span class="tag">skill</span><span class="tag">scaffolding</span></div></a>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user