Across sessions and across agents, project decisions and user constraints are easy to lose. user-thoughts persists those decisions into a project-local mdbase so any future agent can recover the user's intent without re-deriving it from scratch.
The skill records user intent. It does not replace normal task execution. If the user says, "make the button red," the agent should both make the change and record the preference when persistent project memory is useful.
Use this skill when the user states or revises:
/user-thoughts or /ustht.Do not use it for unrelated small talk, transient chatter, or content the user explicitly asks to ignore.
User message -> Agent identifies persistent project intent -> write to #raw/
-> /ustht sortin groups raw entries into #mdbase/
-> /ustht mdbase show exposes the organized memory base
INSTANT_STATUS=off; only explicit skill commands run.INSTANT_STATUS=on and SKILL_STATUS=on; project-relevant user thoughts are written to #raw/ as they appear.ignore start and ignore end mark a temporary interval that should not be recorded.SKILL_STATUS=off pauses instant capture even when INSTANT_STATUS=on. Ignore intervals are context-local and do not persist across sessions.
@/: the installed user-thoughts/ skill directory.~/: the current project working directory.#ustht/: ~/.ustht/.#mdbase/: ~/.ustht/mdbase/.#ignored/: ~/.ustht/ignored/.#raw/: ~/.ustht/raw/.#export/: ~/.ustht/export/..ustht/
├── define.ini
├── README.ai.md
├── raw/
│ └── yyyy-mm-dd.md
├── ignored/
│ └── yyyy-mm-dd.md
├── mdbase/
│ ├── backlog.md
│ ├── README.ai.md
│ └── details/
│ ├── rules.md
│ ├── plans.md
│ ├── ui/
│ │ ├── outline.md
│ │ └── details.md
│ ├── dev-stack.md
│ └── general.md
└── export/
Required tools:
#ustht/.Optional tool:
sortin or resort maintenance that spans many files. Use the main agent directly only when subagents are unavailable.The scripts/ directory provides small Python helpers for mechanical operations:
| Script | Purpose | Example |
|---|---|---|
common.py |
Shared helpers | Imported by other scripts |
status.py |
Show current runtime state | python @/scripts/status.py |
init.py |
Initialize .ustht/ |
python @/scripts/init.py |
show_raw.py |
Show unprocessed raw entries | python @/scripts/show_raw.py |
show_mdbase.py |
Show mdbase index or a dimension | python @/scripts/show_mdbase.py show --all |
sortin.py |
Soft-maintain raw entries into mdbase | python @/scripts/sortin.py --dry |
write_raw.py |
Append one raw thought | python @/scripts/write_raw.py "Use REST APIs" --dim dev-stack |
toggle.py |
Toggle skill or instant mode | python @/scripts/toggle.py instant on |
ignore_ops.py |
Manage ignored entries | python @/scripts/ignore_ops.py show |
resort has no standalone script because it requires semantic review, deduplication, and restructuring by an agent.
define.ini stores simple key/value runtime state:
| Key | Value | Meaning |
|---|---|---|
SKILL_STATUS |
on or off |
Whether the skill accepts write operations |
INSTANT_STATUS |
on or off |
Whether instant capture is enabled |
LAST_SORTIN |
yyyy-mm-dd HH:MM or empty |
Last soft-maintenance time |
Write the file atomically by replacing its complete contents. Do not append partial key/value fragments.
Commands may use either /user-thoughts or /ustht.
/ustht init: create .ustht/ and copy templates./ustht status: show status, raw counts, and dimension counts./ustht skill: show skill status./ustht skill on|off: enable or disable writes./ustht instant: show instant-capture status./ustht instant on|off: enable or disable instant capture./ustht sortin [--dry]: append unprocessed raw entries into mdbase./ustht resort [--dry]: semantically review and reorganize all mdbase content./ustht ignore start|end: start or end an ignore interval./ustht ignore --last: remove the last raw entry and record it in #ignored/./ustht ignore: same as --last when used as a standalone command./ustht ignore show: list ignored entries./ustht ignore or /user-thoughts ignore: ignore that message./ustht raw: show unprocessed raw entries./ustht mdbase show [--all|--dimension]: show the index, all dimensions, or one dimension./ustht mdbase export [--all|--dimension]: export mdbase content to #export/./ustht import <path>: scan markdown files under a safe project-local path and merge project-relevant decisions into mdbase.Chain commands with &&, for example /ustht skill on && instant on.
When instant mode is active:
- [HH:MM] original text | suggested-dim:dimension.sortin./ustht sortin.sortin is soft maintenance:
#raw/*.md files.#mdbase/ files grouped by date.<!-- processed --> on the first line.LAST_SORTIN and the mdbase index.resort is hard maintenance:
general.md instead of inventing too many dimensions.resort..ustht/ can contain sensitive information. The skill does not redact content; users must use ignore commands or repository hygiene to manage sensitive data.#ustht/./ subdirectories only; no .., backslashes, spaces, absolute paths, or reserved names.<!-- processed --> as meaningful only when it is the first line of a raw file.More detail is available in references/safety.md, references/sortin.md, references/commands.md, and references/edge-cases.md.
None. This skill is intentionally focused on project-local user intent persistence.