diff --git a/templates/assets/icon.png b/templates/assets/icon.png
new file mode 100644
index 0000000..2eaf0bb
Binary files /dev/null and b/templates/assets/icon.png differ
diff --git a/templates/awizemann-site-status-checker/README.md b/templates/awizemann-site-status-checker/README.md
new file mode 100644
index 0000000..e726386
--- /dev/null
+++ b/templates/awizemann-site-status-checker/README.md
@@ -0,0 +1,39 @@
+# Site Status Checker
+
+A minimal uptime watchdog that pings a list of URLs once a day, records pass/fail results, and keeps a simple Scarf dashboard up to date.
+
+**Requires Scarf 2.3+** — this template uses the configuration feature (a form during install, and a Configuration button on the dashboard for editing later).
+
+## What you get
+
+- **Configurable site list** — you tell Scarf which URLs to watch during install, via a form. No file editing required. Edit the list later via the **Configuration** button on the project dashboard (slider icon next to the folder).
+- **Configurable timeout** — how long to wait per URL before giving up, also set via the form.
+- **`.scarf/config.json`** — where your configured values land. The agent reads this at run time; you never need to open it by hand.
+- **`status-log.md`** — the agent's append-only log of check results. New runs append a section at the top. Created automatically on first run.
+- **`.scarf/dashboard.json`** — Scarf dashboard with live stat widgets (sites up, sites down, last checked), the full list of watched sites with their last-known status, and a usage guide.
+- **Cron job `Check site status`** — registered (paused) by the installer; tag `[tmpl:awizemann/site-status-checker]`. Runs daily at 9:00 AM when enabled. Reads your configured sites + timeout, hits each URL, writes results to `status-log.md`, and updates the dashboard.
+
+## First steps
+
+1. During install, fill in the Configuration form: add the URLs you want to watch and (optionally) adjust the timeout. Hit Continue, then Install.
+2. After install, open the **Cron** sidebar and enable the `[tmpl:awizemann/site-status-checker] Check site status` job. It's paused on install so nothing runs without your explicit say-so.
+3. From the project's dashboard, ask your agent to run the job now: *"Run the site status check and update the dashboard."*
+4. Future runs happen automatically at 9 AM daily.
+
+## Changing sites or timeout later
+
+Click the **Configuration** button (slider icon, dashboard toolbar) to re-open the form pre-filled with your current values. Add, remove, or edit URLs. Save. The next cron run picks up the changes.
+
+## Customizing
+
+- **Change the schedule.** Edit the cron job in the Cron sidebar — the schedule field accepts `30m`, `every 2h`, or standard cron expressions like `0 9 * * *`.
+- **Change what "down" means.** By default the agent treats any non-2xx/3xx HTTP response as down. If you want to check for specific strings in the body (e.g. "Maintenance"), tell the agent in `AGENTS.md` and it will adapt.
+- **Add alerting.** Set a `deliver` target on the cron job (Discord, Slack, Telegram) — the agent will post the run summary there instead of just writing to `status-log.md`.
+
+## Recommended model
+
+`claude-haiku-4` works well — this is a simple tool-use task (HTTP GETs + a short summary). Haiku keeps costs low when the cron runs daily. The recommendation appears in the Configuration form; Scarf doesn't auto-switch your active model, so adjust via Settings if you'd like.
+
+## Uninstalling
+
+Right-click the project in the sidebar → **Uninstall Template…** (or click the shippingbox icon on the dashboard header). Scarf walks you through exactly what's about to be removed: template-installed files in the project dir, the `[tmpl:…]` cron job, and the Configuration values you entered (`config.json` + Keychain items for any secrets — though this template has none). User-created files (like `status-log.md`) are preserved.
diff --git a/templates/awizemann-site-status-checker/dashboard.json b/templates/awizemann-site-status-checker/dashboard.json
new file mode 100644
index 0000000..8e5a319
--- /dev/null
+++ b/templates/awizemann-site-status-checker/dashboard.json
@@ -0,0 +1,75 @@
+{
+ "version": 1,
+ "title": "Site Status",
+ "description": "Daily uptime check for your watched URLs. The stat widgets, the sites list, and the Site tab's preview URL all update automatically when the cron job runs. Switch to the Site tab to see your first watched site live.",
+ "theme": { "accent": "green" },
+ "sections": [
+ {
+ "title": "Current Status",
+ "columns": 3,
+ "widgets": [
+ {
+ "type": "stat",
+ "title": "Sites Up",
+ "value": 0,
+ "icon": "checkmark.circle.fill",
+ "color": "green",
+ "subtitle": "responded 2xx/3xx"
+ },
+ {
+ "type": "stat",
+ "title": "Sites Down",
+ "value": 0,
+ "icon": "xmark.circle.fill",
+ "color": "red",
+ "subtitle": "non-2xx, timeout, DNS"
+ },
+ {
+ "type": "stat",
+ "title": "Last Checked",
+ "value": "never",
+ "icon": "clock",
+ "color": "blue",
+ "subtitle": "ISO-8601 timestamp"
+ }
+ ]
+ },
+ {
+ "title": "Watched Sites",
+ "columns": 1,
+ "widgets": [
+ {
+ "type": "list",
+ "title": "Watched Sites (populated after first run)",
+ "items": [
+ { "text": "Run the check once to populate — the agent reads your Configuration and fills this list with live status.", "status": "pending" }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Live Site Preview",
+ "columns": 1,
+ "widgets": [
+ {
+ "type": "webview",
+ "title": "First Watched Site",
+ "url": "https://awizemann.github.io/scarf/",
+ "height": 420
+ }
+ ]
+ },
+ {
+ "title": "How to Use",
+ "columns": 1,
+ "widgets": [
+ {
+ "type": "text",
+ "title": "Quick Start",
+ "format": "markdown",
+ "content": "**1.** Review your configuration — click the **slider icon** (top-right of this dashboard) to open Configuration. The sites you enter there are what the cron job will check.\n\n**2.** Enable the `[tmpl:awizemann/site-status-checker] Check site status` cron job in the Cron sidebar. It ships paused — nothing runs until you say so.\n\n**3.** Ask your agent: *\"Run the site status check now.\"* The Watched Sites list populates, the stat widgets update, the Site tab's URL switches to your first watched site, and a new entry lands at the top of `status-log.md`.\n\n**4.** Daily at 9 AM the cron job fires automatically. Change the schedule in the Cron sidebar if you want a different cadence.\n\nSwitch to the **Site** tab (next to Dashboard, above) to see your first watched site rendered in a browser. Useful to eyeball a site when the status says up but something still looks off.\n\nSee `README.md` and `AGENTS.md` in the project root for the full spec."
+ }
+ ]
+ }
+ ]
+}
diff --git a/templates/awizemann-site-status-checker/index.html b/templates/awizemann-site-status-checker/index.html
new file mode 100644
index 0000000..813d658
--- /dev/null
+++ b/templates/awizemann-site-status-checker/index.html
@@ -0,0 +1,104 @@
+
+
+
+ Exactly what you'll see inside Scarf after install. Values shown here are
+ placeholders; the agent updates them each time the cron job runs.
+
+
+
+
+
+
+
+
+
+
README
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/awizemann-site-status-checker/manifest.json b/templates/awizemann-site-status-checker/manifest.json
new file mode 100644
index 0000000..5ce1279
--- /dev/null
+++ b/templates/awizemann-site-status-checker/manifest.json
@@ -0,0 +1,50 @@
+{
+ "schemaVersion": 2,
+ "id": "awizemann/site-status-checker",
+ "name": "Site Status Checker",
+ "version": "1.1.0",
+ "minScarfVersion": "2.3.0",
+ "minHermesVersion": "0.9.0",
+ "author": {
+ "name": "Alan Wizemann",
+ "url": "https://github.com/awizemann/scarf"
+ },
+ "description": "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.",
+ "category": "monitoring",
+ "tags": ["monitoring", "uptime", "cron", "starter", "configurable"],
+ "contents": {
+ "dashboard": true,
+ "agentsMd": true,
+ "cron": 1,
+ "config": 2
+ },
+ "config": {
+ "schema": [
+ {
+ "key": "sites",
+ "type": "list",
+ "itemType": "string",
+ "label": "Sites to Watch",
+ "description": "One URL per item. HTTP or HTTPS. You can add and remove entries after install via the Configuration button on the dashboard.",
+ "required": true,
+ "minItems": 1,
+ "maxItems": 25,
+ "default": ["https://example.com", "https://example.org"]
+ },
+ {
+ "key": "timeout_seconds",
+ "type": "number",
+ "label": "Request Timeout (seconds)",
+ "description": "How long to wait for each URL before giving up.",
+ "required": false,
+ "min": 1,
+ "max": 60,
+ "default": 10
+ }
+ ],
+ "modelRecommendation": {
+ "preferred": "claude-haiku-4",
+ "rationale": "Simple tool-use task — HTTP GETs + a short summary. Haiku is plenty and keeps cost low when the cron runs daily."
+ }
+ }
+}
diff --git a/templates/catalog.json b/templates/catalog.json
new file mode 100644
index 0000000..7abaeb5
--- /dev/null
+++ b/templates/catalog.json
@@ -0,0 +1,68 @@
+{
+ "generated": true,
+ "schemaVersion": 1,
+ "templates": [
+ {
+ "author": {
+ "name": "Alan Wizemann",
+ "url": "https://github.com/awizemann/scarf"
+ },
+ "bundleSha256": "0a20802a8830a7cfdd1afa2888e42e113c9a17a37439384a3037d32ad1f24c1f",
+ "bundleSize": 7569,
+ "category": "monitoring",
+ "config": {
+ "modelRecommendation": {
+ "preferred": "claude-haiku-4",
+ "rationale": "Simple tool-use task \u2014 HTTP GETs + a short summary. Haiku is plenty and keeps cost low when the cron runs daily."
+ },
+ "schema": [
+ {
+ "default": [
+ "https://example.com",
+ "https://example.org"
+ ],
+ "description": "One URL per item. HTTP or HTTPS. You can add and remove entries after install via the Configuration button on the dashboard.",
+ "itemType": "string",
+ "key": "sites",
+ "label": "Sites to Watch",
+ "maxItems": 25,
+ "minItems": 1,
+ "required": true,
+ "type": "list"
+ },
+ {
+ "default": 10,
+ "description": "How long to wait for each URL before giving up.",
+ "key": "timeout_seconds",
+ "label": "Request Timeout (seconds)",
+ "max": 60,
+ "min": 1,
+ "required": false,
+ "type": "number"
+ }
+ ]
+ },
+ "contents": {
+ "agentsMd": true,
+ "config": 2,
+ "cron": 1,
+ "dashboard": true
+ },
+ "description": "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.",
+ "detailSlug": "awizemann-site-status-checker",
+ "id": "awizemann/site-status-checker",
+ "installUrl": "https://raw.githubusercontent.com/awizemann/scarf/main/templates/awizemann/site-status-checker/site-status-checker.scarftemplate",
+ "minHermesVersion": "0.9.0",
+ "minScarfVersion": "2.3.0",
+ "name": "Site Status Checker",
+ "tags": [
+ "monitoring",
+ "uptime",
+ "cron",
+ "starter",
+ "configurable"
+ ],
+ "version": "1.1.0"
+ }
+ ]
+}
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..c091574
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ Scarf Templates
+
+
+
+
+
+
+
+
+ Scarf Templates
+
+
+
+
+
+
Pre-packaged projects for Scarf
+
+ Browse 1 community template — each ships with a
+ ready-to-install Scarf dashboard, a cross-agent AGENTS.md, optional
+ cron jobs and skills. Click a template to see what it does; one click installs
+ it into Scarf.
+