add 000-configs/, dashboard, templates, .obsidian/, bin/, model-identity
This commit is contained in:
+6
-2
@@ -1,2 +1,6 @@
|
||||
# Add .obsidian to gitignore so personal config stays local
|
||||
.obsidian/
|
||||
# Personal Obsidian workspace state (don't sync)
|
||||
.obsidian/workspace.json
|
||||
.obsidian/workspace.json.bak
|
||||
|
||||
# Plugin cache/state (per-device)
|
||||
.obsidian/plugins/*/data.json
|
||||
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"daily-notes": true
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"folder": "01-logs/daily",
|
||||
"format": "YYYY-MM-DD",
|
||||
"template": "tpl/daily.md",
|
||||
"autorun": false,
|
||||
"autorunOnlyIfToday": false
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "000-configs"
|
||||
status: "active"
|
||||
folder: "000-configs"
|
||||
tags: [config, index]
|
||||
created: "2026-07-29"
|
||||
updated: "2026-07-29"
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# 000-configs
|
||||
|
||||
Server, model, and workspace configuration docs. Mirror of `/home/user/000-configs/`.
|
||||
|
||||
## Subfolders
|
||||
|
||||
| Folder | What's In It |
|
||||
|---|---|
|
||||
| [[prompts/]] | Reusable system prompts |
|
||||
| [[tools/]] | CLI / API tool docs (gh, playwright, vite, etc.) |
|
||||
| [[skills/]] | Skill definitions |
|
||||
| [[modes/]] | Model mode presets (creative, research, code, etc.) — incl. `workplace-modes.md` |
|
||||
| [[workspace/]] | Workspace layouts and setup |
|
||||
| [[settings/]] | Open WebUI / server settings |
|
||||
|
||||
## Migration Note
|
||||
|
||||
These docs used to live at `/home/user/000-configs/`. They've been moved here so the vault is the single source of truth. The `/home/user/000-configs/` directory still exists but is now a mirror.
|
||||
|
||||
Sync: when adding a new tool doc, save it in the vault (`000-configs/tools/`) and symlink or copy to `/home/user/000-configs/` if needed.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Configs Archive
|
||||
|
||||
Old or deprecated configs. Don't delete — they explain why we moved off something.
|
||||
|
||||
## How to archive
|
||||
|
||||
Move the file here and set `status: "archive"` in its frontmatter.
|
||||
@@ -0,0 +1,28 @@
|
||||
# Workplace Modes
|
||||
|
||||
Mode configs — defines what context/models/prompts apply in different scenarios.
|
||||
|
||||
## Examples
|
||||
|
||||
- `research-mode.md` — web searches, note-taking
|
||||
- `coding-mode.md` — git commits, code review
|
||||
- `debug-mode.md` — logs, traces, error hunting
|
||||
- `admin-mode.md` — server config, deployment
|
||||
|
||||
## Format
|
||||
|
||||
```markdown
|
||||
# Mode Name
|
||||
|
||||
## Active when
|
||||
- User says "let's research X"
|
||||
- User mentions "build mode"
|
||||
|
||||
## Stack
|
||||
- Prompt: `[[../prompts/research-prompt]]`
|
||||
- Tools: `[[../tools/...]]`
|
||||
- Skills: `[[../skills/...]]`
|
||||
|
||||
## Rules
|
||||
-
|
||||
```
|
||||
@@ -0,0 +1,33 @@
|
||||
# Prompts
|
||||
|
||||
System prompts, agent prompts, model-specific prompts.
|
||||
|
||||
## Format
|
||||
|
||||
Each prompt file:
|
||||
```markdown
|
||||
---
|
||||
title: "Prompt name"
|
||||
status: "active" | "draft" | "archive"
|
||||
tags: [prompt, <provider>, <use-case>]
|
||||
created: YYYY-MM-DD
|
||||
updated: YYYY-MM-DD
|
||||
version: 1.0.0
|
||||
provider: openwebui | claude | gpt | local
|
||||
use_case: research | coding | ops | etc
|
||||
---
|
||||
|
||||
# Prompt Name
|
||||
|
||||
[the actual prompt text]
|
||||
```
|
||||
|
||||
## Naming
|
||||
|
||||
- `openwebui-system.md`
|
||||
- `claude-code-agent.md`
|
||||
- `gpt-researcher.md`
|
||||
|
||||
## Versioning
|
||||
|
||||
Bump `version` on every edit. Major = rewrite.
|
||||
@@ -0,0 +1,17 @@
|
||||
# Settings
|
||||
|
||||
Config file templates, environment variable docs, app settings.
|
||||
|
||||
## Examples
|
||||
|
||||
- `openwebui-env.md` — env vars for openwebui
|
||||
- `obsidian-config.md` — vault config notes
|
||||
- `git-config.md` — git config for this server
|
||||
|
||||
## Format
|
||||
|
||||
Each settings file:
|
||||
- What the config controls
|
||||
- Default values
|
||||
- Current values on this server
|
||||
- How to change
|
||||
@@ -0,0 +1,18 @@
|
||||
# Skills
|
||||
|
||||
Skill docs — how-tos for tasks models do often on this server.
|
||||
|
||||
## Examples
|
||||
|
||||
- `obsidian-vault-workflow.md`
|
||||
- `git-commit-messages.md`
|
||||
- `research-web-search.md`
|
||||
- `obsidian-dataview-patterns.md`
|
||||
|
||||
## Format
|
||||
|
||||
Each skill:
|
||||
- What it does
|
||||
- When to use
|
||||
- Step-by-step
|
||||
- Gotchas / server-specific notes
|
||||
@@ -0,0 +1,202 @@
|
||||
# GitHub CLI (gh) Instructions for Open WebUI Models
|
||||
|
||||
`gh` is the GitHub CLI — v2.96.0, fully installed and authenticated as **`stateofshit`**.
|
||||
|
||||
This document covers how any model on this server can use `gh` for repo management, issues, PRs, and everything GitHub-related.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
```bash
|
||||
gh --help # full help
|
||||
gh auth status # confirm you're logged in
|
||||
gh repo list # list all repos
|
||||
gh repo view <repo> # view a repo
|
||||
gh issue list # list issues in current dir's repo
|
||||
gh pr create # create a pull request
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Authentication Status
|
||||
|
||||
Already logged in as **`stateofshit`** with token scopes: `admin:public_key`, `gist`, `read:org`, `repo`.
|
||||
|
||||
To check:
|
||||
|
||||
```bash
|
||||
gh auth status
|
||||
```
|
||||
|
||||
Expected output:
|
||||
```
|
||||
✓ Logged in to github.com account stateofshit
|
||||
✓ Git operations protocol: ssh
|
||||
✓ Token scopes: 'admin:public_key', 'gist', 'read:org', 'repo'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Repo Management
|
||||
|
||||
### Create a new repo
|
||||
|
||||
```bash
|
||||
gh repo create <owner>/<name> --private --description "what it is"
|
||||
```
|
||||
|
||||
Flags:
|
||||
- `--private` or `--public`
|
||||
- `--clone` — also clone it locally after creating
|
||||
- `--push` — push local branch to remote
|
||||
|
||||
### List repos
|
||||
|
||||
```bash
|
||||
gh repo list stateofshit --limit 50
|
||||
```
|
||||
|
||||
### View a repo
|
||||
|
||||
```bash
|
||||
gh repo view stateofshit/shit_in_a_vault
|
||||
```
|
||||
|
||||
### Delete a repo
|
||||
|
||||
⚠️ **Irreversible.**
|
||||
|
||||
```bash
|
||||
gh repo delete stateofshit/shit_in_a_vault --yes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Working With the Vault Repo
|
||||
|
||||
The vault lives at `/home/user/02-repos/shit_in_a_vault/`.
|
||||
|
||||
Before working with it, read the boot prompt:
|
||||
|
||||
```bash
|
||||
cat /home/user/02-repos/shit_in_a_vault/04-models/model-boot.md
|
||||
```
|
||||
|
||||
### Everyday flow
|
||||
|
||||
```bash
|
||||
cd /home/user/02-repos/shit_in_a_vault
|
||||
|
||||
# Check status
|
||||
git status
|
||||
|
||||
# Stage and commit
|
||||
git add -A
|
||||
git commit -m "description of changes"
|
||||
|
||||
# Push
|
||||
git push
|
||||
```
|
||||
|
||||
No need to authenticate — `git` uses SSH which is already set up via `~/.ssh/config`.
|
||||
|
||||
### Pull latest
|
||||
|
||||
```bash
|
||||
cd /home/user/02-repos/shit_in_a_vault
|
||||
git pull
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Issues
|
||||
|
||||
### Create an issue
|
||||
|
||||
```bash
|
||||
gh issue create --title "Bug: thing broken" --body "Details here"
|
||||
```
|
||||
|
||||
### List issues
|
||||
|
||||
```bash
|
||||
gh issue list
|
||||
```
|
||||
|
||||
### View / close
|
||||
|
||||
```bash
|
||||
gh issue view <number>
|
||||
gh issue close <number>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pull Requests
|
||||
|
||||
### Create a PR
|
||||
|
||||
```bash
|
||||
# From a feature branch
|
||||
git checkout -b my-feature
|
||||
# ... make changes, commit, push ...
|
||||
gh pr create --title "Add feature" --body "What it does"
|
||||
```
|
||||
|
||||
### List / view / merge
|
||||
|
||||
```bash
|
||||
gh pr list
|
||||
gh pr view <number>
|
||||
gh pr merge <number>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gists
|
||||
|
||||
```bash
|
||||
# Create
|
||||
gh gist create file.txt
|
||||
|
||||
# List
|
||||
gh gist list
|
||||
|
||||
# View
|
||||
gh gist view <gist-id>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Working With Other Repos
|
||||
|
||||
Models can work with any repo `stateofshit` has access to.
|
||||
|
||||
### Clone any accessible repo
|
||||
|
||||
```bash
|
||||
gh repo clone stateofshit/webby /home/user/02-repos/webby
|
||||
```
|
||||
|
||||
Already cloned repos are in `/home/user/02-repos/`:
|
||||
- `webby` — `stateofshit/webby`
|
||||
- `shit_in_a_vault` — `stateofshit/shit_in_a_vault`
|
||||
|
||||
---
|
||||
|
||||
## Environment
|
||||
|
||||
- `gh` binary: `/usr/bin/gh` (system-installed)
|
||||
- Config: `~/.config/gh/hosts.yml`
|
||||
- Token is stored in that config — **do not expose it in chat or in files**
|
||||
- Git protocol: SSH (key at `~/.ssh/github_openwebui`)
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- **Never** paste the token or `~/.config/gh/hosts.yml` contents into chat output.
|
||||
- **Never** run `gh auth logout` — it will break all future model access.
|
||||
- Deleting a repo is permanent. Use `--yes` with extreme care.
|
||||
- `gh` respects the current directory's git remote. Run it inside a repo to act on that repo.
|
||||
@@ -0,0 +1,95 @@
|
||||
# Playwright Browser Instructions for Open WebUI Coding AI
|
||||
|
||||
Use Playwright when the user asks you to inspect, test, debug, screenshot, or interact with a real webpage or web app.
|
||||
|
||||
Playwright is available inside the Open WebUI terminal container.
|
||||
|
||||
## What Playwright Is For
|
||||
|
||||
Use Playwright for:
|
||||
|
||||
- checking whether a webpage actually renders
|
||||
- taking screenshots of an app
|
||||
- testing buttons, forms, menus, routing, and mobile layouts
|
||||
- inspecting page text after JavaScript runs
|
||||
- debugging frontend errors that do not show up with `curl`
|
||||
- verifying `https://preview.boogerclub.com`
|
||||
|
||||
Do not use Playwright as a replacement for normal web search. Use it when browser rendering or interaction matters.
|
||||
|
||||
## Quick Commands
|
||||
|
||||
Take a screenshot:
|
||||
|
||||
```bash
|
||||
npx playwright screenshot --browser=chromium https://example.com /home/user/example.png
|
||||
```
|
||||
|
||||
Take a screenshot of the live Vite preview:
|
||||
|
||||
```bash
|
||||
npx playwright screenshot --browser=chromium https://preview.boogerclub.com /home/user/preview.png
|
||||
```
|
||||
|
||||
Open a mobile-sized screenshot:
|
||||
|
||||
```bash
|
||||
npx playwright screenshot --browser=chromium --viewport-size=390,844 https://preview.boogerclub.com /home/user/preview-mobile.png
|
||||
```
|
||||
|
||||
Generate a Playwright test scaffold in an app:
|
||||
|
||||
```bash
|
||||
cd /home/user/projects/YOUR_APP
|
||||
npm install -D @playwright/test
|
||||
npx playwright install chromium
|
||||
npx playwright test
|
||||
```
|
||||
|
||||
## One-Off Page Inspection Script
|
||||
|
||||
For quick rendered-page inspection, create a temporary script like this:
|
||||
|
||||
```js
|
||||
const { chromium } = require('playwright')
|
||||
|
||||
;(async () => {
|
||||
const browser = await chromium.launch({ headless: true })
|
||||
const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } })
|
||||
await page.goto('https://preview.boogerclub.com', { waitUntil: 'networkidle' })
|
||||
console.log(await page.title())
|
||||
console.log((await page.locator('body').innerText()).slice(0, 2000))
|
||||
await page.screenshot({ path: '/home/user/preview.png', fullPage: true })
|
||||
await browser.close()
|
||||
})()
|
||||
```
|
||||
|
||||
Run it with:
|
||||
|
||||
```bash
|
||||
node script-name.js
|
||||
```
|
||||
|
||||
## Current Verified State
|
||||
|
||||
Playwright Chromium has been installed and verified in this container.
|
||||
|
||||
Smoke test that passed:
|
||||
|
||||
```bash
|
||||
cd /home/user
|
||||
npx playwright screenshot --browser=chromium https://example.com /home/user/playwright-smoke.png
|
||||
```
|
||||
|
||||
If Playwright later says browser binaries are missing, run:
|
||||
|
||||
```bash
|
||||
npx playwright install chromium
|
||||
```
|
||||
|
||||
If Chromium fails with missing shared libraries, run this from the host against the Open WebUI compose stack:
|
||||
|
||||
```bash
|
||||
docker compose exec -u root open-terminal sh -lc 'cd /home/user && npx playwright install-deps chromium'
|
||||
```
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Tools
|
||||
|
||||
Tool docs — CLI references, browser automation, frameworks, anything with a CLI or API.
|
||||
|
||||
## Naming
|
||||
|
||||
`TOOL_NAME_INSTRUCTIONS.md` — matches the existing convention from `/home/user/000-configs/`.
|
||||
|
||||
## Current
|
||||
|
||||
- `GH_CLI_INSTRUCTIONS.md` — GitHub CLI
|
||||
- `PLAYWRIGHT_BROWSER_INSTRUCTIONS.md` — browser automation
|
||||
- `VITE_PREVIEW_INSTRUCTIONS.md` — Vite preview server
|
||||
|
||||
## Adding a new tool doc
|
||||
|
||||
```bash
|
||||
cd /home/user/02-repos/shit_in_a_vault/000-configs/tools
|
||||
touch NEW_TOOL_INSTRUCTIONS.md
|
||||
```
|
||||
|
||||
Include:
|
||||
- Install location
|
||||
- Auth status
|
||||
- Common commands
|
||||
- Server-specific quirks
|
||||
@@ -0,0 +1,147 @@
|
||||
# Vite Preview Instructions for Open WebUI Coding AI
|
||||
|
||||
Use this when the user asks to make a Vite/React app live, visible, public, previewable, or available at the preview URL.
|
||||
|
||||
## Public Preview URL
|
||||
|
||||
The stable public preview URL is:
|
||||
|
||||
```text
|
||||
https://preview.boogerclub.com
|
||||
```
|
||||
|
||||
Caddy on the host already proxies this hostname to the `open-terminal` container on port `5173`:
|
||||
|
||||
```text
|
||||
preview.boogerclub.com -> open-terminal:5173
|
||||
```
|
||||
|
||||
Do not change the Open WebUI URL. Open WebUI stays at:
|
||||
|
||||
```text
|
||||
https://openwebui.boogerclub.com
|
||||
```
|
||||
|
||||
## Where Apps Live
|
||||
|
||||
Inside the Open WebUI terminal container:
|
||||
|
||||
```text
|
||||
/home/user/projects
|
||||
/home/user/repos
|
||||
```
|
||||
|
||||
On the host these map to:
|
||||
|
||||
```text
|
||||
/home/ubuntu/openwebui/projects
|
||||
/home/ubuntu/repos
|
||||
```
|
||||
|
||||
## Start Command
|
||||
|
||||
For a Vite app, run this from the app directory:
|
||||
|
||||
```bash
|
||||
npm run dev -- --host 0.0.0.0 --port 5173
|
||||
```
|
||||
|
||||
Only one app can use the public preview slot at a time. If port `5173` is already in use, stop the old Vite dev server before starting the new one.
|
||||
|
||||
## Required Vite Host Allowlist
|
||||
|
||||
If the preview URL shows this error:
|
||||
|
||||
```text
|
||||
Blocked request. This host ("preview.boogerclub.com") is not allowed.
|
||||
To allow this host, add "preview.boogerclub.com" to `server.allowedHosts` in vite.config.js.
|
||||
```
|
||||
|
||||
Add this to `vite.config.ts` or `vite.config.js`:
|
||||
|
||||
```ts
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
server: {
|
||||
allowedHosts: ['preview.boogerclub.com'],
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
If the config already has a `server` block, add only:
|
||||
|
||||
```ts
|
||||
allowedHosts: ['preview.boogerclub.com']
|
||||
```
|
||||
|
||||
Then restart Vite with:
|
||||
|
||||
```bash
|
||||
npm run dev -- --host 0.0.0.0 --port 5173
|
||||
```
|
||||
|
||||
## Verification
|
||||
|
||||
From inside the terminal container, verify Vite is running:
|
||||
|
||||
```bash
|
||||
curl -I http://127.0.0.1:5173
|
||||
```
|
||||
|
||||
Expected result:
|
||||
|
||||
```text
|
||||
HTTP/1.1 200 OK
|
||||
```
|
||||
|
||||
From the public internet, verify the live preview:
|
||||
|
||||
```bash
|
||||
curl -I https://preview.boogerclub.com
|
||||
```
|
||||
|
||||
Expected result:
|
||||
|
||||
```text
|
||||
HTTP/2 200
|
||||
via: 1.1 Caddy
|
||||
```
|
||||
|
||||
Also confirm Open WebUI still works:
|
||||
|
||||
```bash
|
||||
curl -I https://openwebui.boogerclub.com
|
||||
```
|
||||
|
||||
Expected result:
|
||||
|
||||
```text
|
||||
HTTP/2 200
|
||||
```
|
||||
|
||||
## Common Fixes
|
||||
|
||||
- `502` from `https://preview.boogerclub.com`: Caddy is up, but no Vite server is listening on `open-terminal:5173`. Start the app with the standard command.
|
||||
- `Blocked request... host is not allowed`: add `preview.boogerclub.com` to `server.allowedHosts` in the app's Vite config and restart Vite.
|
||||
- App works at `127.0.0.1:5173` but not the public URL: check `allowedHosts`, then check DNS for `preview.boogerclub.com`.
|
||||
- Open WebUI should not be moved to the preview URL. Keep it on `https://openwebui.boogerclub.com`.
|
||||
|
||||
## Current Known Working Example
|
||||
|
||||
The current working example app is:
|
||||
|
||||
```text
|
||||
/home/user/projects/candlestick-dashboard
|
||||
```
|
||||
|
||||
It is configured with:
|
||||
|
||||
```ts
|
||||
server: {
|
||||
allowedHosts: ['preview.boogerclub.com'],
|
||||
}
|
||||
```
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
title: "Dashboard Query Block"
|
||||
status: "active"
|
||||
folder: "000-shit_admin"
|
||||
tags: [dashboard, dataview, template]
|
||||
created: "2026-07-29"
|
||||
updated: "2026-07-29"
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# Dataview Query Snippets
|
||||
|
||||
Reusable Dataview blocks. Paste into any note.
|
||||
|
||||
---
|
||||
|
||||
## Active Tasks
|
||||
|
||||
```dataview
|
||||
TABLE priority, due, owner
|
||||
FROM ""
|
||||
WHERE contains(tags, "task") AND status = "active"
|
||||
SORT priority ASC, due ASC
|
||||
```
|
||||
|
||||
## Today's Daily Note
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "01-logs/daily"
|
||||
WHERE date = date(today)
|
||||
```
|
||||
|
||||
## Recent Edits
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM ""
|
||||
WHERE status != "archive"
|
||||
SORT updated DESC
|
||||
LIMIT 10
|
||||
```
|
||||
|
||||
## Recent Archives
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM ""
|
||||
WHERE status = "archive"
|
||||
SORT updated DESC
|
||||
LIMIT 10
|
||||
```
|
||||
|
||||
## Inbox Count
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "00-inbox"
|
||||
WHERE status = "draft"
|
||||
```
|
||||
|
||||
## All Handoffs
|
||||
|
||||
```dataview
|
||||
TABLE from, to, date
|
||||
FROM "05-handoffs"
|
||||
SORT updated DESC
|
||||
```
|
||||
|
||||
## Research by Tag
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "02-notes"
|
||||
WHERE contains(tags, "research")
|
||||
SORT updated DESC
|
||||
```
|
||||
|
||||
## Tasks by Owner
|
||||
|
||||
```dataview
|
||||
TABLE priority, due, status
|
||||
FROM ""
|
||||
WHERE contains(tags, "task") AND owner = "stateofshit"
|
||||
SORT priority ASC
|
||||
```
|
||||
|
||||
## Tasks Due Soon
|
||||
|
||||
```dataview
|
||||
TABLE priority, due, status
|
||||
FROM ""
|
||||
WHERE contains(tags, "task") AND status = "active" AND due AND due <= date(today) + dur(7 days)
|
||||
SORT due ASC
|
||||
```
|
||||
|
||||
## Overdue
|
||||
|
||||
```dataview
|
||||
TABLE priority, due, owner
|
||||
FROM ""
|
||||
WHERE contains(tags, "task") AND status = "active" AND due AND due < date(today)
|
||||
SORT due ASC
|
||||
```
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: "Dashboard"
|
||||
status: "active"
|
||||
folder: "000-shit_admin"
|
||||
tags: [dashboard, home]
|
||||
created: "2026-07-29"
|
||||
updated: "2026-07-29"
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# Dashboard
|
||||
|
||||
> Home for the vault. Dataview pulls live data from frontmatter.
|
||||
|
||||
---
|
||||
|
||||
## Today
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "01-logs/daily"
|
||||
WHERE file.day = date(today)
|
||||
SORT file.day DESC
|
||||
```
|
||||
|
||||
## Inbox (untriaged)
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "00-inbox"
|
||||
WHERE status = "draft"
|
||||
SORT created DESC
|
||||
LIMIT 20
|
||||
```
|
||||
|
||||
## Active Tasks
|
||||
|
||||
```dataview
|
||||
TABLE priority, due, owner
|
||||
FROM ""
|
||||
WHERE contains(tags, "task") AND status = "active"
|
||||
SORT priority ASC, due ASC
|
||||
```
|
||||
|
||||
## Recent Logs
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "01-logs"
|
||||
SORT updated DESC
|
||||
LIMIT 5
|
||||
```
|
||||
|
||||
## Open Handoffs
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "05-handoffs"
|
||||
WHERE status = "active"
|
||||
SORT updated DESC
|
||||
```
|
||||
|
||||
## Research WIP
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM "02-notes"
|
||||
WHERE contains(tags, "wip") AND status != "archive"
|
||||
SORT updated DESC
|
||||
LIMIT 10
|
||||
```
|
||||
|
||||
## Recently Archived
|
||||
|
||||
```dataview
|
||||
LIST
|
||||
FROM ""
|
||||
WHERE status = "archive"
|
||||
SORT updated DESC
|
||||
LIMIT 5
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quick Folders
|
||||
|
||||
- [[000-shit_admin/README|000-shit_admin]] — your zone
|
||||
- [[00-inbox/README|00-inbox]]
|
||||
- [[01-logs/README|01-logs]]
|
||||
- [[02-notes/README|02-notes]]
|
||||
- [[03-archive/README|03-archive]]
|
||||
- [[04-models/README|04-models]]
|
||||
- [[05-handoffs/README|05-handoffs]]
|
||||
- [[files/README|files]]
|
||||
- [[tpl/README|tpl]]
|
||||
|
||||
## Model Docs
|
||||
|
||||
- [[04-models/Vault-Rules]]
|
||||
- [[04-models/model-boot]]
|
||||
- [[04-models/model-memory]]
|
||||
- [[04-models/model-identity]]
|
||||
@@ -5,7 +5,8 @@ folder: "04-models"
|
||||
model_owner: "none"
|
||||
tags: [rules, model]
|
||||
created: "2026-07-28"
|
||||
updated: "2026-07-28"
|
||||
updated: "2026-07-29"
|
||||
version: "1.1.0"
|
||||
---
|
||||
|
||||
# Vault Rules
|
||||
@@ -24,11 +25,16 @@ folder: "04-models"
|
||||
tags: [tag1, tag2]
|
||||
created: "YYYY-MM-DD"
|
||||
updated: "YYYY-MM-DD"
|
||||
version: "1.0.0"
|
||||
---
|
||||
```
|
||||
|
||||
`folder` must match the physical folder this file lives in.
|
||||
`updated` gets bumped on every edit.
|
||||
`version` follows semver: `major.minor.patch`.
|
||||
- `major` — rewrite, restructure
|
||||
- `minor` — new section, new content
|
||||
- `patch` — typo fix, small edit
|
||||
|
||||
## 2. Tags
|
||||
|
||||
@@ -54,6 +60,7 @@ draft -> active -> archive
|
||||
- Never delete a file. Move to `03-archive` and set `status: "archive"`.
|
||||
- `00-inbox` items should eventually move to `02-notes` or `04-models`.
|
||||
- `01-logs` stay forever (don't archive logs).
|
||||
- `01-logs/daily/` is auto-managed by Obsidian Daily Notes plugin. Don't manually create files here.
|
||||
|
||||
## 4. Linking
|
||||
|
||||
@@ -65,8 +72,10 @@ draft -> active -> archive
|
||||
|
||||
| Folder | What Goes There |
|
||||
|---|---|
|
||||
| `000-admin_shit` | Admin notes, config. User folder — models read-only. |
|
||||
| `000-shit_admin` | Your zone. Models read-only. |
|
||||
| `000-configs` | Server/model config docs (mirror of /home/user/000-configs/) |
|
||||
| `00-inbox` | Raw dumps, new ideas, unorganized stuff |
|
||||
| `01-logs/daily` | Auto daily notes (Obsidian Daily Notes plugin) |
|
||||
| `01-logs` | Session logs, daily notes, timestamps |
|
||||
| `02-notes` | Research notes, findings, reference material |
|
||||
| `03-archive` | Done / superseded files |
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Model Identity"
|
||||
status: "active"
|
||||
folder: "04-models"
|
||||
tags: [model, identity]
|
||||
created: "2026-07-29"
|
||||
updated: "2026-07-29"
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# Model Identity
|
||||
|
||||
Each model should fill this in on boot. Helps track who made what.
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Model name | _fill on boot_ |
|
||||
| Provider | _fill on boot_ |
|
||||
| Boot date | _fill on boot_ |
|
||||
| Last active | _fill on boot_ |
|
||||
|
||||
## How To Use
|
||||
|
||||
When a model starts working in this vault, append an entry below:
|
||||
|
||||
```markdown
|
||||
## Entries
|
||||
|
||||
### YYYY-MM-DD — <model-name>
|
||||
- Provider:
|
||||
- Capabilities:
|
||||
- Notes:
|
||||
```
|
||||
|
||||
## Entries
|
||||
|
||||
_(models append here)_
|
||||
@@ -1,26 +1,61 @@
|
||||
---
|
||||
title: "shit_in_a_vault"
|
||||
status: "active"
|
||||
folder: ""
|
||||
tags: [readme, home]
|
||||
created: "2026-07-28"
|
||||
updated: "2026-07-29"
|
||||
version: "1.1.0"
|
||||
---
|
||||
|
||||
# shit_in_a_vault
|
||||
|
||||
Obsidian vault for openwebui models + research.
|
||||
Obsidian vault for openwebui models + research. Private repo.
|
||||
|
||||
## Folders
|
||||
|
||||
| Folder | Purpose |
|
||||
|---|---|
|
||||
| `000-admin_shit/` | User admin — models read-only |
|
||||
| `00-inbox/` | Raw dumps, new stuff |
|
||||
| `01-logs/` | Session logs |
|
||||
| `02-notes/` | Research notes |
|
||||
| `03-archive/` | Dead/superseded |
|
||||
| `04-models/` | Rules, memory, boot prompt |
|
||||
| `05-handoffs/` | Model handoffs |
|
||||
| `files/` | Attachments |
|
||||
| `tpl/` | Templates |
|
||||
| [[000-shit_admin/]] | Your zone — models read-only |
|
||||
| [[000-configs/]] | Server/model config docs |
|
||||
| [[00-inbox/]] | Raw dumps, unprocessed |
|
||||
| [[01-logs/]] | Session logs |
|
||||
| [[01-logs/daily/]] | Auto daily notes (Obsidian Daily Notes plugin) |
|
||||
| [[02-notes/]] | Research notes + tasks |
|
||||
| [[03-archive/]] | Superseded |
|
||||
| [[04-models/]] | Rules, memory, boot prompt, model identity |
|
||||
| [[05-handoffs/]] | Model-to-model handoffs |
|
||||
| [[files/]] | Attachments |
|
||||
| [[tpl/]] | Templates |
|
||||
| [[bin/]] | Helper scripts |
|
||||
|
||||
## For Models
|
||||
|
||||
Boot: read `04-models/model-boot.md`
|
||||
Rules: read `04-models/Vault-Rules.md`
|
||||
Boot: read [[04-models/model-boot]]
|
||||
Rules: read [[04-models/Vault-Rules]]
|
||||
Identity: append to [[04-models/model-identity]]
|
||||
|
||||
## For You (Obsidian PC)
|
||||
|
||||
**Required plugins:**
|
||||
- Daily Notes (built-in, auto-enabled by `.obsidian/core-plugins.json`)
|
||||
- Templates (built-in)
|
||||
- Dataview (community)
|
||||
- Templater (community)
|
||||
|
||||
**Daily note auto-create** — Daily Notes plugin uses:
|
||||
- Folder: `01-logs/daily`
|
||||
- Format: `YYYY-MM-DD`
|
||||
- Template: `tpl/daily.md`
|
||||
|
||||
Already pre-configured in `.obsidian/daily-notes.json`.
|
||||
|
||||
## Dashboard
|
||||
|
||||
[[000-shit_admin/dashboard]] — Dataview-driven home screen.
|
||||
|
||||
## Git
|
||||
|
||||
`git@github.com:stateofshit/shit_in_a_vault.git`
|
||||
- Remote: `git@github.com:stateofshit/shit_in_a_vault.git`
|
||||
- Auth: SSH (`~/.ssh/github_openwebui`) + `gh` CLI
|
||||
- Default branch: `master`
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: "bin"
|
||||
status: "active"
|
||||
folder: "bin"
|
||||
tags: [scripts, index]
|
||||
created: "2026-07-29"
|
||||
updated: "2026-07-29"
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# bin
|
||||
|
||||
Helper shell scripts.
|
||||
|
||||
## Current
|
||||
|
||||
- [[daily.sh]] — auto-create today's daily note from `tpl/daily.md`. Run from cron on the main server, not from openwebui.
|
||||
|
||||
## Adding a script
|
||||
|
||||
- Filename: `snake_case.sh`
|
||||
- Must be executable (`chmod +x`)
|
||||
- Add to this README
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
# bin/daily.sh — auto-create today's daily note from template
|
||||
# Cron: 0 6 * * * /home/user/02-repos/shit_in_a_vault/bin/daily.sh
|
||||
|
||||
VAULT="/home/user/02-repos/shit_in_a_vault"
|
||||
TPL="$VAULT/tpl/daily.md"
|
||||
DEST_DIR="$VAULT/01-logs/daily"
|
||||
DEST="$DEST_DIR/$(date +%Y-%m-%d).md"
|
||||
DATE_STR=$(date +%Y-%m-%d)
|
||||
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
|
||||
|
||||
mkdir -p "$DEST_DIR"
|
||||
|
||||
if [ -f "$DEST" ]; then
|
||||
echo "Daily note $DEST already exists, skipping."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$TPL" ]; then
|
||||
echo "Template not found: $TPL" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Substitute {{date:YYYY-MM-DD}} and {{date:}} placeholders
|
||||
sed -e "s|{{date:YYYY-MM-DD}}|$DATE_STR|g" \
|
||||
-e "s|{{date:}}|$DATE_STR|g" \
|
||||
-e "s|{{yesterday:YYYY-MM-DD}}|$YESTERDAY|g" \
|
||||
"$TPL" > "$DEST"
|
||||
|
||||
echo "Created: $DEST"
|
||||
|
||||
# Commit and push
|
||||
cd "$VAULT" || exit 1
|
||||
git add "$DEST"
|
||||
if git diff --cached --quiet; then
|
||||
echo "Nothing to commit."
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "daily: $DATE_STR" && git push
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "{{date:YYYY-MM-DD}}"
|
||||
status: "active"
|
||||
folder: "01-logs/daily"
|
||||
tags: [log, daily]
|
||||
created: "{{date:YYYY-MM-DD}}"
|
||||
updated: "{{date:YYYY-MM-DD}}"
|
||||
version: "1.0.0"
|
||||
date: {{date:YYYY-MM-DD}}
|
||||
---
|
||||
|
||||
# {{date:YYYY-MM-DD}}
|
||||
|
||||
## Agenda
|
||||
|
||||
-
|
||||
|
||||
## Notes
|
||||
|
||||
-
|
||||
|
||||
## Tasks Done
|
||||
|
||||
- [ ]
|
||||
|
||||
## Tasks Tomorrow
|
||||
|
||||
- [ ]
|
||||
|
||||
## Links
|
||||
|
||||
- [[dashboard]]
|
||||
- [[{{yesterday:YYYY-MM-DD}}]] (yesterday)
|
||||
|
||||
## Handoff
|
||||
|
||||
- Active: `[[05-handoffs/...]]`
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: "Handoff: {{from}} → {{to}}"
|
||||
status: "active"
|
||||
folder: "05-handoffs"
|
||||
tags: [handoff]
|
||||
created: "{{date:YYYY-MM-DD}}"
|
||||
updated: "{{date:YYYY-MM-DD}}"
|
||||
version: "1.0.0"
|
||||
from: "{{from}}"
|
||||
to: "{{to}}"
|
||||
---
|
||||
|
||||
# Handoff: {{from}} → {{to}}
|
||||
|
||||
## Source
|
||||
|
||||
`[[04-models/...]]`
|
||||
|
||||
## Context
|
||||
|
||||
- What was being worked on
|
||||
- What got done
|
||||
- What's left
|
||||
|
||||
## Next Steps
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Open Questions
|
||||
|
||||
-
|
||||
|
||||
## Files Touched
|
||||
|
||||
- [ ]
|
||||
- [ ]
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "Research: {{topic}}"
|
||||
status: "draft"
|
||||
folder: "02-notes"
|
||||
tags: [research, wip]
|
||||
created: "{{date:YYYY-MM-DD}}"
|
||||
updated: "{{date:YYYY-MM-DD}}"
|
||||
version: "1.0.0"
|
||||
---
|
||||
|
||||
# Research: {{topic}}
|
||||
|
||||
## Question
|
||||
|
||||
> What are we trying to find out?
|
||||
|
||||
## Sources
|
||||
|
||||
- [ ]
|
||||
|
||||
## Findings
|
||||
|
||||
-
|
||||
|
||||
## Open Questions
|
||||
|
||||
- [ ]
|
||||
|
||||
## Related
|
||||
|
||||
- [[]]
|
||||
|
||||
## Status
|
||||
|
||||
- [ ] Drafting
|
||||
- [ ] Sources cited
|
||||
- [ ] Findings written
|
||||
- [ ] Reviewed
|
||||
- [ ] Archived
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
---
|
||||
title: "Task: {{title}}"
|
||||
status: "active"
|
||||
folder: "02-notes"
|
||||
tags: [task, wip]
|
||||
created: "{{date:YYYY-MM-DD}}"
|
||||
updated: "{{date:YYYY-MM-DD}}"
|
||||
version: "1.0.0"
|
||||
priority: "med"
|
||||
due: "{{date:YYYY-MM-DD}}"
|
||||
owner: "stateofshit"
|
||||
---
|
||||
|
||||
# Task: {{title}}
|
||||
|
||||
## Description
|
||||
|
||||
## Steps
|
||||
|
||||
- [ ]
|
||||
|
||||
## Notes
|
||||
|
||||
## Related
|
||||
|
||||
- [[]]
|
||||
|
||||
## Done When
|
||||
|
||||
- [ ]
|
||||
Reference in New Issue
Block a user