Bootstrap: Default Workflow scaffold
Repo created for a reference/review of the iTelescope.net remote telescope network. This commit copies the Default Workflow in (CLAUDE.md and docs/ from the Default-Workflow repo), adds a .gitignore (secrets and scratch), and fills in state/PROJECT.md with the objective: review every telescope on the network and provide a choosing guide, using only public sources (support article and the maintained Google Sheet; the go.itelescope.net launchpad is login-only).
This commit is contained in:
commit
3fad877dee
7 changed files with 350 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# local scratch and secrets
|
||||
*.token
|
||||
*.key
|
||||
scratch/
|
||||
Thumbs.db
|
||||
.DS_Store
|
||||
51
CLAUDE.md
Normal file
51
CLAUDE.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# Default Workflow
|
||||
|
||||
This file is the entry point for any Claude Code session working under the Default
|
||||
Workflow. Keep it small and read the detailed docs on demand so a session does not
|
||||
load everything at once (see [Cost and tokens](docs/cost-and-tokens.md)).
|
||||
|
||||
## What this is
|
||||
|
||||
A standard operating procedure for building software with Claude Code. It defines how
|
||||
a project is set up, how features are branched, committed, reviewed and merged, how
|
||||
documentation is produced, and what the user expects. Copy this workflow into a new
|
||||
project (see [Project setup](docs/project-setup.md)) and follow it.
|
||||
|
||||
## The five rules
|
||||
|
||||
1. **Minimise cost.** Staying within usage limits matters more than speed. Prefer
|
||||
cheap actions over expensive ones. Read only what you need. Subagents and parallel
|
||||
processing are allowed when they are the effective path (see
|
||||
[User expectations](docs/user-expectations.md)). See
|
||||
[Cost and tokens](docs/cost-and-tokens.md).
|
||||
|
||||
2. **State lives in the repo, not the chat.** Do not rely on chat history, context, or
|
||||
cache to remember decisions, todos, notes, architecture, or objectives. Write them
|
||||
to the committed markdown files under `state/` so a fresh session can pick up with
|
||||
no prior context. See [Documentation policy](docs/documentation-policy.md).
|
||||
|
||||
3. **Every feature is a branch.** Create a branch, commit with full notes in each
|
||||
message, open a PR describing the feature, the tools used and what was achieved,
|
||||
then merge into the trunk. See [Workflow](docs/workflow.md).
|
||||
|
||||
4. **Code and its documentation are written in separate sessions.** The building
|
||||
session comments the code well enough that a later, cold session can write the docs
|
||||
from git history and comments alone. See [Documentation policy](docs/documentation-policy.md).
|
||||
|
||||
5. **Comment for a stranger.** Assume the next session has no memory of why you did
|
||||
anything. The commit history and code comments are the only record.
|
||||
|
||||
## Start of every session
|
||||
|
||||
1. Read `state/PROJECT.md`, `state/TODO.md` and `state/DECISIONS.md` (cheap, small).
|
||||
2. Check `git log --oneline -15` and `git status` to see where things stand.
|
||||
3. Do the work under the rules above.
|
||||
4. Before ending, update the `state/` files so the next session needs no chat history.
|
||||
|
||||
## Detailed docs
|
||||
|
||||
- [Project setup](docs/project-setup.md) - starting a new project on this workflow
|
||||
- [Workflow](docs/workflow.md) - branch, commit, PR and merge process
|
||||
- [Cost and tokens](docs/cost-and-tokens.md) - keeping usage within limits
|
||||
- [Documentation policy](docs/documentation-policy.md) - comments, and docs in a separate session
|
||||
- [User expectations](docs/user-expectations.md) - how the user wants Claude to behave
|
||||
54
docs/documentation-policy.md
Normal file
54
docs/documentation-policy.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Documentation policy
|
||||
|
||||
Two separate ideas, both about making the repo the single source of truth so that no
|
||||
session ever depends on another session's chat history.
|
||||
|
||||
## A. State lives in committed markdown, not in the chat
|
||||
|
||||
Do not use chat history, context, or cache as memory. They cost tokens to carry and
|
||||
vanish between sessions. Instead, everything a future session needs is written to the
|
||||
`state/` directory and committed:
|
||||
|
||||
| File | Holds |
|
||||
|------|-------|
|
||||
| `PROJECT.md` | Objectives, scope, description, audience. The anchor. |
|
||||
| `ARCHITECTURE.md` | How the system is built and why it is built that way. |
|
||||
| `DECISIONS.md` | A dated log of decisions and their rationale. Append, never rewrite history. |
|
||||
| `TODO.md` | Done / in progress / pending. The current state of play. |
|
||||
| `NOTES.md` | Working notes, gotchas, environment quirks, dead ends to avoid. |
|
||||
|
||||
Update these as part of the work, not as an afterthought. A change to how the system
|
||||
works is not finished until `ARCHITECTURE.md` or `DECISIONS.md` reflects it.
|
||||
|
||||
Templates for all of these are in `templates/`.
|
||||
|
||||
## B. Documentation is written in a separate session from the code
|
||||
|
||||
The user facing documentation (README, guides, API docs, changelog) is **not** written
|
||||
in the same session that writes the code. This is deliberate:
|
||||
|
||||
- It forces the building session to leave a complete trail. If the code cannot be
|
||||
documented later from git history and comments alone, the trail was not good enough.
|
||||
- It keeps each session cheap and focused. A building session spends its budget
|
||||
building; a documentation session spends its budget writing docs.
|
||||
- It gives the docs a cold, independent reader who documents what the code actually
|
||||
says, not what the author remembers intending.
|
||||
|
||||
### What the building session must leave behind
|
||||
|
||||
So the later documentation session can work with no chat history:
|
||||
|
||||
1. **Commit messages with full notes** - what changed, why, and any trade-offs. See
|
||||
[Workflow](workflow.md).
|
||||
2. **A complete PR description** - feature, tools used, what was achieved, how it works.
|
||||
3. **Code comments that explain intent** - not what a line does (the code shows that)
|
||||
but why it exists, what it assumes, and what would break it. Comment for a stranger
|
||||
who was not in the room.
|
||||
4. **Current `state/` files** - especially `ARCHITECTURE.md` and `DECISIONS.md`.
|
||||
|
||||
### What the documentation session does
|
||||
|
||||
Starts cold. Reads `git log`, the PRs, the code and its comments, and the `state/`
|
||||
files. Writes the documentation from those alone. If something cannot be understood
|
||||
from the repo, that is a gap to flag, not a reason to guess or to reach for lost chat
|
||||
context.
|
||||
63
docs/project-setup.md
Normal file
63
docs/project-setup.md
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# Project setup
|
||||
|
||||
How to start a new project on the Default Workflow. Do this once, at the beginning of
|
||||
a project, before any feature work.
|
||||
|
||||
## 1. Create the repository
|
||||
|
||||
- Create an empty repo on the forge (git.discworld.casa or wherever the project lives).
|
||||
- Clone it, or `git init` locally and add the remote.
|
||||
- The trunk branch is `main` unless the forge defaults to `master`; either is fine, be
|
||||
consistent and refer to it as "the trunk" in docs.
|
||||
|
||||
## 2. Copy the workflow files in
|
||||
|
||||
From this Default-Workflow repo, copy into the new project root:
|
||||
|
||||
- `CLAUDE.md` - so every session loads the workflow automatically.
|
||||
- `docs/` - the detailed workflow docs (or link to them if you prefer one source of
|
||||
truth; copying keeps the project self contained and offline readable).
|
||||
- `templates/*` into `state/` (see next step).
|
||||
|
||||
## 3. Create the state directory
|
||||
|
||||
The `state/` directory is the project's memory. It replaces chat history. Copy the
|
||||
templates and fill in the project specifics:
|
||||
|
||||
```
|
||||
state/
|
||||
PROJECT.md - objectives, scope, description, who it is for
|
||||
ARCHITECTURE.md - how the system is built and why
|
||||
DECISIONS.md - dated log of decisions and their rationale
|
||||
TODO.md - what is done, in progress, and pending
|
||||
NOTES.md - working notes, gotchas, environment quirks
|
||||
```
|
||||
|
||||
Fill in `PROJECT.md` first. It anchors every later session. A session that reads only
|
||||
`PROJECT.md`, `TODO.md` and `DECISIONS.md` should understand what the project is and
|
||||
what to do next.
|
||||
|
||||
## 4. Add a .gitignore
|
||||
|
||||
Ignore build artefacts, dependencies, secrets and local scratch. Never commit tokens
|
||||
or credentials.
|
||||
|
||||
## 5. First commit
|
||||
|
||||
Commit the scaffold to the trunk directly (this is bootstrap, not a feature):
|
||||
|
||||
```
|
||||
git add .
|
||||
git commit
|
||||
```
|
||||
|
||||
Write a full commit message describing what the scaffold contains and why. From here
|
||||
on, all work follows the [Workflow](workflow.md): a branch per feature.
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] Repo created and remote set
|
||||
- [ ] `CLAUDE.md` and `docs/` present in project root
|
||||
- [ ] `state/` created from templates, `PROJECT.md` filled in
|
||||
- [ ] `.gitignore` in place, no secrets tracked
|
||||
- [ ] Scaffold committed to the trunk
|
||||
58
docs/user-expectations.md
Normal file
58
docs/user-expectations.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# User expectations
|
||||
|
||||
How the user expects a Claude Code session to behave under this workflow. Read this
|
||||
once per session; it rarely changes.
|
||||
|
||||
## Work autonomously
|
||||
|
||||
Do not stop to ask which task to pick up next, or for confirmation before routine work.
|
||||
Default sensibly and keep shipping. Read `state/TODO.md`, choose the next sensible
|
||||
item, do it. Only ask when a decision is genuinely the user's to make and cannot be
|
||||
resolved from the repo or sensible defaults.
|
||||
|
||||
## Cost before speed
|
||||
|
||||
Staying within usage limits is more important than finishing fast or gold plating.
|
||||
When in doubt, take the cheaper path. See [Cost and tokens](cost-and-tokens.md).
|
||||
|
||||
## Subagents are allowed
|
||||
|
||||
Spawning subagents, parallel agents, background tasks and multi-agent workflows is a
|
||||
normal, permitted part of the workflow. Using them is not a breach of the cost rule
|
||||
when they are the effective path: fan-out searches that keep bulk file contents out of
|
||||
the main context, independent pieces of work run in parallel, or verification passes
|
||||
over completed work.
|
||||
|
||||
The cost rule still applies to each one. A subagent must earn its keep: do not spawn
|
||||
one for work a single cheap tool call can do, and do not fan out speculatively. Record
|
||||
subagent use in the PR under "Tools used" so the cost trail stays honest.
|
||||
|
||||
## Leave a clean trail
|
||||
|
||||
Every feature ends as: a merged branch, full commit notes, a complete PR, current
|
||||
`state/` files, and code commented well enough to document later. The user should be
|
||||
able to open the repo weeks later, with no memory of the session, and understand what
|
||||
happened and why from the repo alone.
|
||||
|
||||
## Report honestly
|
||||
|
||||
If tests fail, say so with the output. If a step was skipped, say that. If something is
|
||||
done and verified, say so plainly without hedging. Do not claim more than was done.
|
||||
|
||||
## Writing style
|
||||
|
||||
- No em dashes in prose. Use commas, full stops, or restructure.
|
||||
- British spelling in prose and copy. Preserve code identifiers as written.
|
||||
- Plain, direct language. Say what happened.
|
||||
|
||||
## Confirm before the hard to reverse
|
||||
|
||||
Routine coding is autonomous. But confirm first for actions that are hard to undo or
|
||||
that reach outside the repo: force pushes, history rewrites, deleting things you did
|
||||
not create, deploying, or sending data to external services. Approval for one such
|
||||
action does not carry to the next.
|
||||
|
||||
## The building session stops at merge
|
||||
|
||||
Do not write the user facing documentation in the building session. That is a separate
|
||||
session's job. See [Documentation policy](documentation-policy.md).
|
||||
76
docs/workflow.md
Normal file
76
docs/workflow.md
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
# Workflow
|
||||
|
||||
The branch, commit, PR and merge process for every feature. A "feature" is any unit of
|
||||
change: a new capability, a fix, a refactor.
|
||||
|
||||
## 1. Branch per feature
|
||||
|
||||
Never build directly on the trunk. Start each feature from an up to date trunk:
|
||||
|
||||
```
|
||||
git checkout main
|
||||
git pull
|
||||
git checkout -b feature/<short-kebab-description>
|
||||
```
|
||||
|
||||
Use a clear prefix: `feature/`, `fix/`, `refactor/`, `docs/`.
|
||||
|
||||
## 2. Commit with full notes
|
||||
|
||||
Commit in logical steps, not one giant dump at the end. Every commit message carries
|
||||
the full record of what changed and why, because the commit history is the primary
|
||||
source a later documentation session reads.
|
||||
|
||||
Message shape:
|
||||
|
||||
```
|
||||
<type>: <concise summary in the imperative>
|
||||
|
||||
What changed:
|
||||
- <file or area>: <what and why>
|
||||
- ...
|
||||
|
||||
Why:
|
||||
- <the reasoning, constraints, or decision behind the change>
|
||||
|
||||
Notes:
|
||||
- <anything a cold session should know: trade-offs, follow-ups, gotchas>
|
||||
```
|
||||
|
||||
Do not write "written by Claude" in code or messages. If the project convention
|
||||
requires an authorship tag (for example `ai:claude`), follow that project's rule.
|
||||
|
||||
## 3. Keep state files current
|
||||
|
||||
As you work, update `state/TODO.md` and `state/DECISIONS.md`. Decisions go in the log
|
||||
with a date and rationale. This is what lets the next session skip the chat history.
|
||||
|
||||
## 4. Open a PR when the feature is complete
|
||||
|
||||
When the feature is done and self consistent, push the branch and open a PR. The PR
|
||||
description is the human and machine readable summary of the feature. Use the template
|
||||
in `templates/PR_TEMPLATE.md`. It must state:
|
||||
|
||||
- **Feature** - what was built, in plain terms.
|
||||
- **What was achieved** - the outcome, and how to verify it.
|
||||
- **Tools used** - languages, libraries, commands, services involved.
|
||||
- **How it works** - enough for a documentation session to start from the PR alone.
|
||||
- **Follow ups** - anything deferred.
|
||||
|
||||
## 5. Merge into the trunk
|
||||
|
||||
Merge the PR into the trunk once it is complete. Prefer a merge that preserves the
|
||||
commit history (the notes in each commit are valuable). Delete the feature branch after
|
||||
merge.
|
||||
|
||||
## 6. Do not document in this session
|
||||
|
||||
Writing the user facing documentation is a separate job, done in a separate session,
|
||||
against the merged history. See [Documentation policy](documentation-policy.md). Your
|
||||
job in the building session ends at a merged, well commented, well described feature.
|
||||
|
||||
## Summary
|
||||
|
||||
```
|
||||
branch -> commit (full notes) -> update state/ -> PR (feature, tools, outcome) -> merge -> stop
|
||||
```
|
||||
42
state/PROJECT.md
Normal file
42
state/PROJECT.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Project: itelescope
|
||||
|
||||
> The anchor document. A session that reads only this, TODO.md and DECISIONS.md should
|
||||
> understand what the project is and what to do next. Keep it current.
|
||||
|
||||
## Objective
|
||||
|
||||
A reference and review of the iTelescope.net remote telescope network: what each
|
||||
telescope is, what it is good at, and which one to book for a given kind of target.
|
||||
|
||||
## Scope
|
||||
|
||||
- In scope: reviews and spec tables for every telescope on the iTelescope network,
|
||||
grouped by observatory; source data snapshots; guidance on choosing a scope.
|
||||
- Out of scope: automating bookings, image processing, anything requiring the
|
||||
iTelescope login (the launchpad at go.itelescope.net is authenticated).
|
||||
|
||||
## Audience
|
||||
|
||||
Laurence, when planning imaging or photometry runs on iTelescope, and anyone else
|
||||
choosing a telescope on the network.
|
||||
|
||||
## Description
|
||||
|
||||
iTelescope.net operates remote telescopes across six observatories (Utah, Sierra
|
||||
California, Siding Spring Australia, Deep Sky Chile, AstroCamp Spain, e-EyE Spain).
|
||||
Public specs are scattered across a Freshdesk support article and a maintained Google
|
||||
Sheet. This repo snapshots that data and turns it into a usable review: per-telescope
|
||||
assessments plus a "which scope for what" guide.
|
||||
|
||||
## Success criteria
|
||||
|
||||
- Every active telescope on the network has an entry with specs and an assessment.
|
||||
- A reader can pick the right scope for widefield, deep space, galaxies, photometry,
|
||||
or free imaging without visiting the source pages.
|
||||
|
||||
## Key facts
|
||||
|
||||
- Trunk branch: main
|
||||
- Forge / remote: https://git.discworld.casa/laurence/itelescope
|
||||
- Runtime / stack: markdown only; source data in data/ as CSV
|
||||
- How to run it: nothing to run; read TELESCOPES.md
|
||||
Loading…
Add table
Add a link
Reference in a new issue