Polaris boilerplate: PARA vault, AGENTS.md rulebook, eight polaris skills
This commit is contained in:
commit
0ca9086de5
39 changed files with 1829 additions and 0 deletions
158
6. Templates/_contracts.md
Normal file
158
6. Templates/_contracts.md
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
---
|
||||
type: reference
|
||||
title: "Page contracts"
|
||||
tags:
|
||||
- reference
|
||||
---
|
||||
|
||||
# Page contracts
|
||||
|
||||
**Read this when creating or editing a page.** The `.md` files beside this one are copy-ready skeletons; this file is the rule they implement. **When a contract changes, change its skeleton in the same edit** — a skeleton that drifts from its contract produces pages the skills can't read.
|
||||
|
||||
---
|
||||
|
||||
## Area hub — `2. Areas/<Area>/<Area>_hub.md`
|
||||
|
||||
```yaml
|
||||
type: area
|
||||
status: standing # standing | archived
|
||||
id_prefix: WEB # short, uppercase, set once, never changed
|
||||
workstream_counter: 0 # highest ID issued. Source of truth for IDs
|
||||
parent: # nested Areas only. Never points at itself
|
||||
updated: YYYY-MM-DD
|
||||
tags: [hub, <area-tag>]
|
||||
```
|
||||
|
||||
Body: `## What this is` (one sentence) · `## Workstreams` (each Project by ID, with status) · `## Open items` · `## Key files` · `## People`.
|
||||
|
||||
**Areas take no `next:`, no `deadline:`, and no freshness computation.** A container doesn't compete for attention.
|
||||
|
||||
Every Area has `2. Areas/<Area>/knowledge/_index.md` — seeded at creation, stating what belongs there.
|
||||
|
||||
---
|
||||
|
||||
## Project hub — `1. Projects/<Area>/<Name>/<ID>_hub.md`
|
||||
|
||||
```yaml
|
||||
type: project # never `hub`
|
||||
id: WEB-1 # from the Area's workstream_counter
|
||||
area: <Area folder name> # or the literal `none` — absent ≠ none
|
||||
done_when: "one sentence, testable"
|
||||
status: open # open | paused | closed | archived
|
||||
next: "verb → target — detail [since YYYY-MM-DD]" # optional; may be a YAML list
|
||||
paused_because: "one line" # required when paused
|
||||
deadline: YYYY-MM-DD # optional — the single next delivery gate
|
||||
threads: [slug]
|
||||
updated: YYYY-MM-DD
|
||||
tags: [hub, <area-tag>]
|
||||
```
|
||||
|
||||
Body: `## What this is` · `## Tasks` (checkboxes, `(owned by: name)` when not the owner's) · `## Open items` · `## Key files` · `## People`.
|
||||
|
||||
- **`done_when:` is required.** If you can't write it, it isn't a Project. If it needs the words "ongoing", "maintain" or "as needed", it's an Area.
|
||||
- **`next:` — one move per entry.** Two moves go in a YAML list, never packed into one string. Grammar and verbs → `AGENTS.md`, *The `next:` field*.
|
||||
- **`area: none` is legal but must be written.** Such a project has no knowledge base to receive its deliverable; `polaris-close` archives it whole.
|
||||
|
||||
**A workstream *is* a Project.** It opens when an Area needs finite work done, and closes via `polaris-close`, which returns its deliverable to the Area:
|
||||
|
||||
```
|
||||
Area ──spawns──▶ Project (id, done_when)
|
||||
▲ │ on close
|
||||
└── knowledge/ ◀───┤ deliverable
|
||||
└── process record ──▶ 5. Archive/<Area>/<ID>/
|
||||
```
|
||||
|
||||
A workstream belongs to exactly one Area. A concern spanning several is a **thread**.
|
||||
|
||||
---
|
||||
|
||||
## Person — `3. Resources/People/<Full Name>.md`
|
||||
|
||||
```yaml
|
||||
type: person
|
||||
tier: contact # relationship | contact
|
||||
name: Full Name
|
||||
pronouns: # ask; never infer from a name. Blank until known
|
||||
role:
|
||||
orgs: []
|
||||
contact:
|
||||
status: active # active | dormant
|
||||
cadence: # relationship tier ONLY: weekly | biweekly | monthly | organic
|
||||
last_contact: YYYY-MM-DD
|
||||
follow_up_by: # relationship tier ONLY — a real date
|
||||
updated: YYYY-MM-DD
|
||||
tags: [person]
|
||||
```
|
||||
|
||||
Body: `## Role & Relationship` · `## Background` · `## Context` · `## Open Items` · `## Contact History` (dated lines, newest first).
|
||||
|
||||
**Two tiers, and only one can flag:**
|
||||
|
||||
| Tier | Carries | Can flag? |
|
||||
|---|---|---|
|
||||
| `relationship` | `cadence` + `follow_up_by`, both required | **Yes** — the only pages follow-up checks read |
|
||||
| `contact` | Neither — their presence is a lint finding | **Never** |
|
||||
|
||||
**A contact is not a neglected relationship.** It's someone the vault knows facts about. If someone doesn't warrant a real follow-up date, they're a contact.
|
||||
|
||||
- **`organic` cadence** means "no fixed interval — the next contact is pegged to a specific event." It still requires a real `follow_up_by`, set against that event.
|
||||
- **A relationship page with no `follow_up_by` cannot flag and is invisible.** Lint reports it as a defect.
|
||||
- **Spent follow-ups.** A `follow_up_by` on or before `last_contact` has been overtaken by contact. Compute the live due date instead: `weekly`/`biweekly`/`monthly` → `last_contact` + 7/14/30 days, rendered *(from last contact)*; `organic` → **no date since contact** (never overdue). **Never write the computed date back** — the stored field stays what a person set.
|
||||
- **`status: dormant`** — the engagement ended; the page and every fact stay.
|
||||
|
||||
---
|
||||
|
||||
## Decision — `4. Decisions/YYYY-MM-DD-<slug>.md`
|
||||
|
||||
```yaml
|
||||
type: decision
|
||||
date: YYYY-MM-DD
|
||||
topic: Short title
|
||||
areas: [Area or Project]
|
||||
status: open # open | closed | reversed
|
||||
updated: YYYY-MM-DD
|
||||
tags: [decision]
|
||||
```
|
||||
|
||||
Body: `## Context` · `## Decision` · `## Rationale` · `## Expected outcome` · `## Follow-up` (dated lines).
|
||||
|
||||
**Never edit a past decision's substance.** A reversal is a new decision file that links the old one; the old one's `status` becomes `reversed`.
|
||||
|
||||
---
|
||||
|
||||
## Thread — `3. Resources/Threads/<slug>.md`
|
||||
|
||||
```yaml
|
||||
type: thread
|
||||
title: Short title
|
||||
status: open # open | watching | resolved | dropped
|
||||
domains: [Area or Project]
|
||||
people: [Full Name]
|
||||
opened: YYYY-MM-DD
|
||||
updated: YYYY-MM-DD
|
||||
tags: [thread]
|
||||
```
|
||||
|
||||
Body: `## What it is` · `## Why cross-cutting` · `## Current state` (replace, don't stack) · `## What's needed` · `## Update log` (append-only, newest first).
|
||||
|
||||
**A thread opens** when one signal shows up in two or more separate Areas or Projects. **It closes** when a decision resolves it, or it collapses to a single domain. Resolved and dropped threads move to `5. Archive/Threads/`.
|
||||
|
||||
---
|
||||
|
||||
## Reference note — `3. Resources/Research/` or `2. Areas/<Area>/knowledge/`
|
||||
|
||||
```yaml
|
||||
type: reference
|
||||
title:
|
||||
source: # file, URL, sender, conversation — or "source unrecorded"
|
||||
updated: YYYY-MM-DD
|
||||
tags: [reference, <topic or area tag>]
|
||||
```
|
||||
|
||||
**`source:` is never blank.** Placement → `AGENTS.md`, *The classification test*.
|
||||
|
||||
---
|
||||
|
||||
## Inbox notes
|
||||
|
||||
Daily notes and weekly sweeps carry `date:` and `tags: [inbox, daily-note]` / `[inbox, weekly-sweep]` — no `type:`. Captures carry `date:` and `tags: [inbox]`.
|
||||
22
6. Templates/area-hub.md
Normal file
22
6. Templates/area-hub.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
type: area
|
||||
status: standing
|
||||
id_prefix:
|
||||
workstream_counter: 0
|
||||
parent:
|
||||
updated: YYYY-MM-DD
|
||||
tags:
|
||||
- hub
|
||||
---
|
||||
|
||||
# <Area>
|
||||
|
||||
## What this is
|
||||
|
||||
## Workstreams
|
||||
|
||||
## Open items
|
||||
|
||||
## Key files
|
||||
|
||||
## People
|
||||
52
6. Templates/daily-note.md
Normal file
52
6. Templates/daily-note.md
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
date: YYYY-MM-DD
|
||||
tags:
|
||||
- inbox
|
||||
- daily-note
|
||||
---
|
||||
RE: <Weekday> <Month D YYYY> — [[<prior note>]]
|
||||
|
||||
## Focus
|
||||
|
||||
<What today is about. Three lines, no lists.>
|
||||
|
||||
## Since the last note
|
||||
|
||||
- <Up to five bullets. Omit the section when nothing changed.>
|
||||
|
||||
## <ID> · <Name> — <what is actually owed>
|
||||
|
||||
**Where it stands:** <one or two plain sentences.> → [[<hub>|hub]]
|
||||
|
||||
**Yours:**
|
||||
- [ ] <task> — <asked N times since Mon D>
|
||||
|
||||
**Waiting on:** <Person — what, N days> · or nobody
|
||||
|
||||
> Notes:
|
||||
|
||||
## Loose
|
||||
|
||||
### <Item that belongs to no single workstream>
|
||||
|
||||
<Plain prose.>
|
||||
|
||||
> Notes:
|
||||
|
||||
## Open questions — <N> live
|
||||
|
||||
- [ ] <N>. **<Question>** — <one clause of context>
|
||||
|
||||
## People
|
||||
|
||||
**<N> armed · <N> overdue · <N> defects**
|
||||
|
||||
**Overdue**
|
||||
- <Name> — <N days> (<Mon D>) — <what they are tied to>
|
||||
|
||||
**Due in the next 7 days**
|
||||
- <Name> — <Mon D> — <what they are tied to>
|
||||
|
||||
## Standing
|
||||
|
||||
- <Holds · structural facts. Three lines max.>
|
||||
24
6. Templates/decision.md
Normal file
24
6. Templates/decision.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
type: decision
|
||||
date: YYYY-MM-DD
|
||||
topic:
|
||||
areas: []
|
||||
status: open
|
||||
updated: YYYY-MM-DD
|
||||
tags:
|
||||
- decision
|
||||
---
|
||||
|
||||
# <Decision title>
|
||||
|
||||
## Context
|
||||
|
||||
## Decision
|
||||
|
||||
## Rationale
|
||||
|
||||
## Expected outcome
|
||||
|
||||
## Follow-up
|
||||
|
||||
- YYYY-MM-DD:
|
||||
32
6. Templates/person.md
Normal file
32
6. Templates/person.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
type: person
|
||||
tier: contact
|
||||
name:
|
||||
pronouns:
|
||||
role:
|
||||
orgs: []
|
||||
contact:
|
||||
status: active
|
||||
cadence:
|
||||
last_contact:
|
||||
follow_up_by:
|
||||
updated: YYYY-MM-DD
|
||||
tags:
|
||||
- person
|
||||
---
|
||||
|
||||
# <Full Name>
|
||||
|
||||
## Role & Relationship
|
||||
|
||||
## Background
|
||||
|
||||
## Context
|
||||
|
||||
## Open Items
|
||||
|
||||
- [ ]
|
||||
|
||||
## Contact History
|
||||
|
||||
- YYYY-MM-DD:
|
||||
28
6. Templates/project-hub.md
Normal file
28
6. Templates/project-hub.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
type: project
|
||||
id:
|
||||
area:
|
||||
done_when: ""
|
||||
status: open
|
||||
next:
|
||||
paused_because:
|
||||
deadline:
|
||||
threads: []
|
||||
updated: YYYY-MM-DD
|
||||
tags:
|
||||
- hub
|
||||
---
|
||||
|
||||
# <ID> · <Name>
|
||||
|
||||
## What this is
|
||||
|
||||
## Tasks
|
||||
|
||||
- [ ]
|
||||
|
||||
## Open items
|
||||
|
||||
## Key files
|
||||
|
||||
## People
|
||||
12
6. Templates/reference.md
Normal file
12
6. Templates/reference.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
type: reference
|
||||
title:
|
||||
source:
|
||||
updated: YYYY-MM-DD
|
||||
tags:
|
||||
- reference
|
||||
---
|
||||
|
||||
# <Title>
|
||||
|
||||
*Source: <where this came from, or "source unrecorded">*
|
||||
27
6. Templates/thread.md
Normal file
27
6. Templates/thread.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
type: thread
|
||||
title:
|
||||
status: open
|
||||
domains: []
|
||||
people: []
|
||||
opened: YYYY-MM-DD
|
||||
updated: YYYY-MM-DD
|
||||
tags:
|
||||
- thread
|
||||
---
|
||||
|
||||
# <Thread title>
|
||||
|
||||
## What it is
|
||||
|
||||
## Why cross-cutting
|
||||
|
||||
## Current state
|
||||
|
||||
## What's needed
|
||||
|
||||
- [ ]
|
||||
|
||||
## Update log
|
||||
|
||||
- **YYYY-MM-DD:**
|
||||
48
6. Templates/weekly-sweep.md
Normal file
48
6. Templates/weekly-sweep.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
---
|
||||
date: YYYY-MM-DD
|
||||
tags:
|
||||
- inbox
|
||||
- weekly-sweep
|
||||
---
|
||||
RE: [[<prior sweep>]]
|
||||
|
||||
## How to use this
|
||||
|
||||
Tick a box when you've looked at it. Write under anything that changed — a Notes line is enough. `ingest` files it.
|
||||
|
||||
## Since the last sweep
|
||||
|
||||
- <Up to five bullets.>
|
||||
|
||||
## Areas
|
||||
|
||||
### <Area> — <one line on what it holds> → [[<hub>]]
|
||||
|
||||
- [ ] **<ID> · <Name>** — <status> · <where it stands, one line>
|
||||
> Notes:
|
||||
|
||||
## Threads
|
||||
|
||||
- [ ] **<slug>** — <status> · <one line>
|
||||
> Notes:
|
||||
|
||||
## People
|
||||
|
||||
### Armed — <N>
|
||||
|
||||
- [ ] **<Name>** — <N days overdue / due Mon D> · <what they are tied to>
|
||||
> Notes:
|
||||
|
||||
### Released — follow-ups whose work closed
|
||||
|
||||
- [ ] **<Name>** — <follow-up date> · was for <workstream>, closed <Mon D>
|
||||
> Notes:
|
||||
|
||||
### Contacts — <Area>
|
||||
|
||||
- [ ] **<Name>** — <role, one line>
|
||||
> Notes:
|
||||
|
||||
## Open questions — <N> live
|
||||
|
||||
- [ ] <N>. **<Question>** — <one clause of context>
|
||||
Loading…
Add table
Add a link
Reference in a new issue