cite-research
Use whenever you design or build something people will use — forms, screens, game mechanics, animations, loading states, pacing — so the decision carries its research ("as per research:<id>, ... because ..."), and whenever a user has adjusted one feature several times in a session, to offer a search for research from reputable authorities instead of more guessing. Also the grammar for @research in code, prose and commit trailers. Works for any project in a Tillandsias forge.
- License 许可
- MIT
- 最近更新
- 2026-11-15
- Stars
- ★ 6
- Forks
- 0
01 前言 Front Matter
- name
- cite-research
- license
- MIT
- metadata
- { "trace": "spec:research-records", "author": "tillandsias" }
- description
- Use whenever you design or build something people will use — forms, screens, game mechanics, animations, loading states, pacing — so the decision carries its research ("as per research:<id>, ... because ..."), and whenever a user has adjusted one feature several times in a session, to offer a search for research from reputable authorities instead of more guessing. Also the grammar for @research in code, prose and commit trailers. Works for any project in a Tillandsias forge.
03 SKILL.md 正文
Cite research
A design decision without its reason is a preference. With a research record behind it, it is a requirement the next session can check.
The grammar
Cite the record, never the paper; the record carries the provenance.
The id is the record's path without .md, and it resolves in two places:
the project's research/ and the shared library at
$TILLANDSIAS_RESEARCH (/opt/research; research/ in a Tillandsias
checkout).
| Where | Form |
|---|---|
| specs, design notes, plans | as per research:interaction/fitts-law-1954, the primary action is the largest target and sits where the pointer already is, because movement time grows with distance over width. |
| code comment | // @research interaction/response-time-limits-nielsen-1993 (beside @cheatsheet lines) |
| commit message trailer | Research: interaction/response-time-limits-nielsen-1993 |
| replying to the user | "The research on this (Nielsen's response-time limits) says ... so I ..." — plain words, the id in brackets once. |
The sentence that cites must say the decision, the relationship and why the claim supports it. "Two forms and some buttons" becomes "as per research:psychology/flow-nakamura-csikszentmihalyi-2014, these two forms are one task split into two steps with the next goal visible on each, because flow needs a clear goal and immediate feedback at every step."
Only cite a record whose claim: actually supports the decision. If the
decision goes beyond the research (an exact duration, a colour), say "design
choice" next to it. Never cite from memory: if there is no record, find one
(/find-research) or write the decision as a choice.
When to cite
- Every time a spec or design describes how parts relate, how fast something responds, how a user is guided, what they will notice.
- Every commit that changes such behaviour carries the trailer.
- Every time you reject a user's suggestion on behaviour grounds: show the record, then let them decide.
The fine-tuning trigger
Keep a rough count, per feature, of how many times the user has asked you to adjust the same thing in this session (a timing, a layout, a difficulty curve, a wording). When it reaches about three without converging, offer once, in these words or close to them:
That's a lot of fine-tuning for this feature. Shall we search online for research from reputable authorities on it, so we tune against what is known rather than guess?
- On yes: run
/find-researchwith the feature as the question, then come back with what the research says and a proposed setting that cites it. - On no: carry on, and do not offer again for that feature this session.
- Do not offer on the first or second adjustment, and not for features where no research could apply (a brand colour, a name).
Checking a citation
A research:<id> must resolve to a file:
id="interaction/fitts-law-1954"
test -f "research/$id.md" || test -f "${TILLANDSIAS_RESEARCH:-/opt/research}/$id.md" || echo "dangling: research:$id"
A dangling citation is a defect: either pull the record in or remove the claim.
04 同仓库更多 Skills
start-a-new-project
Use when the user wants to start a new project, asks how to begin, or is in an empty or nearly empty repository ("how do I start?", "I want to build an app", "help me set up a new project"). Guides them, in plain language, to describe the app as specs first (spec-driven development with OpenSpec), recommends Flutter (and the Flame engine for games and graphics), and sets up specs, a plan folder for longer work, and a README. Works for any project, not only Tillandsias.
smoke-curl-install-and-test-e2e
Clean-room end-to-end smoke test of a PUBLISHED release. Curl-installs the latest release binary from GitHub, does a full `podman system reset --force`, runs `tillandsias --debug --init` from a pristine state, and (if init is clean) launches `tillandsias --cloud 8007342/tillandsias --opencode` with ONE short fixed smoke prompt (run the credential guard, reply with a fixed token; never the /meta-orchestration loop, 1941-smkp). Every issue observed — by this skill's agent during install/reset/init, or by the agent's one turn inside the forge — is filed as a plan/issues work packet for later pickup by /advance-work-from-plan.
project-discipline
How THIS project wants its branches and pushes shaped — read its branch-discipline level (0 push to main freely; 1 integration branch + pull requests; 2 work refs into the integration branch), the drift between what it declares and what its history shows, which hooks it has installed, how to raise it, and the work format each hook refusal asks for. Every refusal that says "use /project-discipline for instructions" resolves here. Works for any project in a Tillandsias forge, not only Tillandsias.
probe-macos-tray-on-windows
Daily cross-platform health probe — compiles the macos-tray crate from the local Windows host. Expected to succeed as a stub (the crate is fully cfg-gated for non-macOS); a build failure here means a shared module or crate broke for everyone. Files structured findings to plan/issues/probe-macos-tray-on-windows-findings-<DATE>.md.
multihost-orchestration
Compatibility alias for the canonical coordinate-multihost-work skill.
meta-orchestration
Host-aware Tillandsias recurring runtime loop: sync remote state, drain claimable plan work, run eligible e2e smoke gates, coordinate integrations on mutable Linux, release when warranted, update plan, commit, and push before exit.