Commit df7e112
Changed files (7)
modules
flake-parts
modules/dev/agents/skills/grilling/SKILL.md
@@ -7,14 +7,16 @@ description: >
# Grilling Me
-Interview me relentlessly about every aspect of this plan until we reach a shared
-understanding. Walk down each branch of the design tree, resolving dependencies
-between decisions one-by-one. For each question, provide your recommended answer.
+Interview me relentlessly about every aspect of this plan until we reach a
+shared understanding. Walk down each branch of the design tree, resolving
+dependencies between decisions one-by-one. For each question, provide your
+recommended answer.
Ask the questions one at a time, waiting for feedback on each question before
continuing. Asking multiple questions at once is bewildering.
-If a *fact* can be found by exploring the codebase, look it up rather than asking
-me. The *decisions*, though, are mine — put each one to me and wait for my answer.
+If a *fact* can be found by exploring the codebase, look it up rather than
+asking me. The *decisions*, though, are mine — put each one to me and wait for
+my answer.
Do not enact the plan until I confirm we have reached a shared understanding.
modules/dev/agents/skills/jujutsu/SKILL.md
@@ -9,8 +9,8 @@ allowed-tools: Bash(jj *)
# Jujutsu (jj) Version Control System
-This skill helps you work with Jujutsu, a Git-compatible VCS with mutable commits
-and automatic rebasing.
+This skill helps you work with Jujutsu, a Git-compatible VCS with mutable
+commits and automatic rebasing.
**Tested with jj v0.37.0** - Commands may differ in other versions.
@@ -47,22 +47,24 @@ Editor-based commands will fail in non-interactive environments.
### The Working Copy is a Commit
In jj, your working directory is always a commit (referenced as `@`). Changes
-are automatically snapshotted when you run any jj command. There is no staging area.
+are automatically snapshotted when you run any jj command. There is no staging
+area.
There is no need to run `jj commit`.
### Commits Are Mutable
**CRITICAL**: Unlike git, jj commits can be freely modified after creation. You
-can update descriptions, squash changes, rebase, and absorb — all without creating
-new commits. See "Essential Workflow" below for the recommended working pattern.
+can update descriptions, squash changes, rebase, and absorb — all without
+creating new commits. See "Essential Workflow" below for the recommended working
+pattern.
### Change IDs vs Commit IDs
-- **Change ID**: A stable identifier (like `tqpwlqmp`) that persists when a commit
- is rewritten — prefer these when referencing commits
-- **Commit ID**: A content hash (like `3ccf7581`) that changes when commit content
- changes
+- **Change ID**: A stable identifier (like `tqpwlqmp`) that persists when a
+ commit is rewritten — prefer these when referencing commits
+- **Commit ID**: A content hash (like `3ccf7581`) that changes when commit
+ content changes
### Revsets
@@ -83,8 +85,8 @@ Use revsets with `-r` flags: `jj log -r 'trunk()..@'`
**Always create your commit message before writing code:**
-Validate that you're on a blank revision with `jj st`. If you are not, you should
-type:
+Validate that you're on a blank revision with `jj st`. If you are not, you
+should type:
```bash
jj new
@@ -103,7 +105,8 @@ jj st
### Creating Atomic Commits
-Each commit should represent ONE logical change. Use this format for commit messages:
+Each commit should represent ONE logical change. Use this format for commit
+messages:
```text
Examples:
@@ -129,11 +132,12 @@ jj --no-pager show <change-id>
jj --no-pager diff --git
```
-**IMPORTANT: `jj diff` output format**: The default `jj diff` output uses a side-by-side
-line number format (e.g. `26 26:`) that looks very different from git's `+`/`-`
-prefix format. This is **normal and correct** — it is NOT corrupted or showing stale
-content. However, to avoid confusion, **always use `jj diff --git`** to get standard
-unified diff format with `+`/`-` lines.
+**IMPORTANT: `jj diff` output format**: The default `jj diff` output uses a
+side-by-side line number format (e.g. `26 26:`) that looks very different from
+git's `+`/`-` prefix format. This is **normal and correct** — it is NOT
+corrupted or showing stale content. However, to avoid confusion,
+**always use `jj diff --git`** to get standard unified diff format with `+`/`-`
+lines.
### Moving Between Commits
@@ -165,13 +169,14 @@ Move changes from current commit into its parent:
jj squash
```
-**Note**: `jj squash -i` opens an interactive UI and will hang in agent environments.
-Avoid it.
+**Note**: `jj squash -i` opens an interactive UI and will hang in agent
+environments. Avoid it.
### Splitting Commits
-**Warning**: `jj split` is interactive and will hang in agent environments. To divide
-a commit, use `jj restore` to move changes out, then create separate commits manually.
+**Warning**: `jj split` is interactive and will hang in agent environments. To
+divide a commit, use `jj restore` to move changes out, then create separate
+commits manually.
### Absorbing Changes
@@ -259,9 +264,10 @@ multiple workspaces — each with its own working directory and working-copy
commit (`@`) — all sharing the same commits, operations, and bookmarks. This is
jj's equivalent of `git worktree`.
-Useful for running a long build or test in one workspace while editing in another.
-Workspaces are a rarely-needed feature; consult the [official docs](https://docs.jj-vcs.dev/latest/working-copy/#workspaces)
-for anything beyond the basics below.
+Useful for running a long build or test in one workspace while editing in
+another. Workspaces are a rarely-needed feature; consult the
+[official docs](https://docs.jj-vcs.dev/latest/working-copy/#workspaces) for
+anything beyond the basics below.
### Common commands
@@ -292,14 +298,14 @@ In `jj log`, each workspace's `@` appears as `<workspace-name>@`.
workspace's files and reads the op log, so it sees commits/bookmarks made by
other workspaces. There is no filesystem watcher.
- **Stale working copy.** If another workspace rewrites this workspace's `@`
- (e.g. via `jj squash`, `rebase`, `abandon`), jj refuses commands here until you
- run `jj workspace update-stale`. Same recovery path if a command was interrupted
- mid-update.
+ (e.g. via `jj squash`, `rebase`, `abandon`), jj refuses commands here until
+ you run `jj workspace update-stale`. Same recovery path if a command was
+ interrupted mid-update.
- **Shared `@` is sharp-edged.** `jj edit <id>` lets two workspaces point at the
same change without warning. When one mutates it, the other goes stale; if the
- stale one had un-snapshotted edits, `update-stale` preserves them as a **divergent
- commit** (same change ID, shown as `xyz??` in `jj log`) that you must resolve.
- Avoid sharing `@` unless both workspaces are read-only.
+ stale one had un-snapshotted edits, `update-stale` preserves them as a
+ **divergent commit** (same change ID, shown as `xyz??` in `jj log`) that you
+ must resolve. Avoid sharing `@` unless both workspaces are read-only.
### Agent guidance
@@ -339,7 +345,8 @@ After fetching, rebase your work onto the updated trunk: `jj rebase -d main`
### Switching Between jj and git (Colocated Repos Only)
**This section only applies to colocated repos** (where both `.jj/` and `.git/`
-exist). In non-colocated repos, do not use git commands — they will corrupt jj state.
+exist). In non-colocated repos, do not use git commands — they will corrupt jj
+state.
In a colocated repository, you can use both jj and git commands with care:
@@ -365,7 +372,8 @@ jj edit <change-id>
- Git may complain about uncommitted changes if jj's working copy differs from
the git HEAD
- ALWAYS ensure your work is committed in jj before switching to git
-- After git operations, jj will detect and incorporate the changes on next command
+- After git operations, jj will detect and incorporate the changes on next
+ command
### Pushing Changes
@@ -416,22 +424,22 @@ jj allows committing conflicts — you can resolve them later:
jj st
```
-**Agent conflict resolution**: Do not use `jj resolve` (interactive). Instead, edit
-the conflicted files directly to remove conflict markers, then run `jj st` to verify
-resolution.
+**Agent conflict resolution**: Do not use `jj resolve` (interactive). Instead,
+edit the conflicted files directly to remove conflict markers, then run `jj st`
+to verify resolution.
## Preserving Commit Quality
-**IMPORTANT**: Because commits are mutable, always refine them before considering
-work done:
+**IMPORTANT**: Because commits are mutable, always refine them before
+considering work done:
1. **Review your commit**: `jj --no-pager show @` or `jj --no-pager diff --git`
2. **Is it atomic?** One logical change per commit
3. **Is the message clear?** Use imperative verb phrase in sentence case format
with no full stop: e.g. "Add login endpoint", "Fix null pointer in payment
processor", "Remove deprecated API endpoints"
-4. **Are there unrelated changes?** Use `jj restore` to move changes out, then create
- separate commits
+4. **Are there unrelated changes?** Use `jj restore` to move changes out, then
+ create separate commits
5. **Should changes be elsewhere?** Use `jj squash` or `jj absorb`
## Quick Reference
modules/flake-parts/treefmt.nix
@@ -10,7 +10,9 @@
treefmt = {
programs.alejandra.enable = true;
programs.gofmt.enable = true;
- programs.rumdl-format.enable = true;
+ programs.rumdl-format = {
+ enable = true;
+ };
};
};
}
.editorconfig
@@ -6,3 +6,6 @@ indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = 80
AGENTS.md
@@ -1,7 +1,8 @@
# IX
-IX is a Nix configuration built with [Dendritic Pattern](https://github.com/mightyiam/dendritic)
-and [den](https://github.com/denful/den).
+IX is a Nix configuration built with
+[Dendritic Pattern](https://github.com/mightyiam/dendritic) and
+[den](https://github.com/denful/den).
## Code Style
README.md
@@ -11,13 +11,18 @@ configuration for all my machines, powered by [den].
## Stack
-- Shell: [Bash](https://www.gnu.org/software/bash/) (with [Flyline](https://github.com/HalFrgrd/flyline))
-- Terminal: [Foot](https://codeberg.org/dnkl/foot) and [Zellij](https://zellij.dev/)
-- Editor: [Helix](https://github.com/helix-editor/helix) (with [Steel plugins fork](https://github.com/mattwparas/helix/tree/steel-event-system))
+- Shell: [Bash](https://www.gnu.org/software/bash/) (with
+ [Flyline](https://github.com/HalFrgrd/flyline))
+- Terminal: [Foot](https://codeberg.org/dnkl/foot) and
+ [Zellij](https://zellij.dev/)
+- Editor: [Helix](https://github.com/helix-editor/helix) (with
+ [Steel plugins fork](https://github.com/mattwparas/helix/tree/steel-event-system))
- WM: [Niri](https://github.com/niri-wm/niri)
- Desktop Shell: [Noctalia](https://github.com/noctalia-dev/noctalia)
-- Browser: [Floorp](https://github.com/Floorp-Projects/Floorp); [Chromium](https://www.chromium.org/chromium-projects/)
-- IME: [Rime](https://rime.im/) (with [rime-frost](https://github.com/gaboolic/rime-frost))
+- Browser: [Floorp](https://github.com/Floorp-Projects/Floorp);
+ [Chromium](https://www.chromium.org/chromium-projects/)
+- IME: [Rime](https://rime.im/) (with
+ [rime-frost](https://github.com/gaboolic/rime-frost))
- Icon: [WhiteSur](https://github.com/vinceliuice/WhiteSur-icon-theme)
- Cursor: [Bibata Cursor](https://github.com/ful1e5/Bibata_Cursor)
- Color Scheme: [Catppuccin Mocha](https://catppuccin.com/palette/#flavor-mocha)
@@ -28,7 +33,8 @@ The code regarding the internal mechanisms of the den framework was basically
all written by LLMs. Some portions of certain [hjem] modules were ported from
[home-manager] using LLMs.
-Commits assisted by LLM agents will add `Assisted-by: <agent>:<model>` as a trailer.
+Commits assisted by LLM agents will add `Assisted-by: <agent>:<model>` as a
+trailer.
## License
rumdl.toml
@@ -0,0 +1,7 @@
+#:schema https://github.com/rvben/rumdl/raw/refs/tags/v0.2.77/rumdl.schema.json
+
+[global]
+editorconfig = true
+
+[MD013]
+reflow = true