mkpfs 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mkpfs-0.0.1/.claude/MEMORY.md +199 -0
- mkpfs-0.0.1/.claude/rules/html-reporting.md +23 -0
- mkpfs-0.0.1/.claude/rules/markdown-style.md +118 -0
- mkpfs-0.0.1/.claude/rules/pypi-project-guidelines.md +38 -0
- mkpfs-0.0.1/.claude/rules/readme-style.md +117 -0
- mkpfs-0.0.1/.claude/rules/tmp-usage.md +15 -0
- mkpfs-0.0.1/.claude/rules/venv-activation.md +26 -0
- mkpfs-0.0.1/.claude/settings.json +21 -0
- mkpfs-0.0.1/.claude/skills/fix-tests/SKILL.md +28 -0
- mkpfs-0.0.1/.claude/skills/html-reporting/SKILL.md +55 -0
- mkpfs-0.0.1/.claude/skills/related-project-add/SKILL.md +264 -0
- mkpfs-0.0.1/.claude/skills/related-project-add/references/memory-entry-template.md +19 -0
- mkpfs-0.0.1/.claude/skills/related-project-add/references/report-template.md +144 -0
- mkpfs-0.0.1/.claude/skills/related-project-add/references/source-manifest-template.md +33 -0
- mkpfs-0.0.1/.editorconfig +16 -0
- mkpfs-0.0.1/.github/FUNDING.yml +2 -0
- mkpfs-0.0.1/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
- mkpfs-0.0.1/.github/ISSUE_TEMPLATE/custom.md +10 -0
- mkpfs-0.0.1/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
- mkpfs-0.0.1/.github/dependabot.yml +7 -0
- mkpfs-0.0.1/.github/workflows/ci.yml +84 -0
- mkpfs-0.0.1/.gitignore +214 -0
- mkpfs-0.0.1/.gitmodules +20 -0
- mkpfs-0.0.1/.pre-commit-config.yaml +23 -0
- mkpfs-0.0.1/AGENTS.md +1 -0
- mkpfs-0.0.1/CLAUDE.md +140 -0
- mkpfs-0.0.1/CONTRIBUTING.md +42 -0
- mkpfs-0.0.1/LICENSE +674 -0
- mkpfs-0.0.1/PKG-INFO +1170 -0
- mkpfs-0.0.1/README.md +476 -0
- mkpfs-0.0.1/assets/images/icon.png +0 -0
- mkpfs-0.0.1/mkpfs/__init__.py +4 -0
- mkpfs-0.0.1/mkpfs/__main__.py +21 -0
- mkpfs-0.0.1/mkpfs/cli.py +1063 -0
- mkpfs-0.0.1/mkpfs/consts.py +70 -0
- mkpfs-0.0.1/mkpfs/logging.py +64 -0
- mkpfs-0.0.1/mkpfs/pbar.py +103 -0
- mkpfs-0.0.1/mkpfs/pfs.py +4323 -0
- mkpfs-0.0.1/mkpfs/utils.py +111 -0
- mkpfs-0.0.1/pyproject.toml +141 -0
- mkpfs-0.0.1/related-projects/kstuff-lite.md +167 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki/Home.md +21 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki/Library.md +15 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki/PKG-Information.md +50 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki/PkgEditor.md +42 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki/PkgTool.md +1 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki/manifest.md +22 -0
- mkpfs-0.0.1/related-projects/liborbispkg-wiki.md +208 -0
- mkpfs-0.0.1/related-projects/liborbispkg.md +380 -0
- mkpfs-0.0.1/related-projects/other-knowledge-sources.md +146 -0
- mkpfs-0.0.1/related-projects/pkgtool.md +356 -0
- mkpfs-0.0.1/related-projects/shadowmountplus.md +928 -0
- mkpfs-0.0.1/run-tests.sh +25 -0
- mkpfs-0.0.1/tests/mkpfs/test_cli.py +1063 -0
- mkpfs-0.0.1/tests/mkpfs/test_consts.py +348 -0
- mkpfs-0.0.1/tests/mkpfs/test_init.py +13 -0
- mkpfs-0.0.1/tests/mkpfs/test_logging.py +44 -0
- mkpfs-0.0.1/tests/mkpfs/test_main.py +35 -0
- mkpfs-0.0.1/tests/mkpfs/test_pbar.py +51 -0
- mkpfs-0.0.1/tests/mkpfs/test_pfs.py +1859 -0
- mkpfs-0.0.1/tests/mkpfs/test_utils.py +82 -0
- mkpfs-0.0.1/uv.lock +1007 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Project Memory
|
|
2
|
+
|
|
3
|
+
This file is a curated, durable knowledge base for active development and testing in this repository.
|
|
4
|
+
Keep entries concise, source-backed, and oriented toward repeatable workflows.
|
|
5
|
+
|
|
6
|
+
## How To Use This Memory
|
|
7
|
+
|
|
8
|
+
- Read this file first for high-signal project context before deep investigation.
|
|
9
|
+
- Treat this as a navigation layer; use linked source files as the ground truth.
|
|
10
|
+
- Prefer adding compact bullets over long prose.
|
|
11
|
+
- When behavior changes, update the related section and keep references current.
|
|
12
|
+
|
|
13
|
+
## Core References
|
|
14
|
+
|
|
15
|
+
- [PyPI project guidelines](rules/pypi-project-guidelines.md) — packaging checklist, README guidance, and release-validation references.
|
|
16
|
+
- [Root agent rules](../AGENTS.md) — canonical coding, testing, and style expectations used by local agent workflows.
|
|
17
|
+
- [Claude agent mirror](../CLAUDE.md) — synchronized agent guidance used by local `.claude` workflows.
|
|
18
|
+
- Architecture map: keep CLI wiring in [`mkpfs/cli.py`](../mkpfs/cli.py), and keep PFS format/build/inspection logic in [`mkpfs/pfs.py`](../mkpfs/pfs.py).
|
|
19
|
+
- Shared modules: constants in [`mkpfs/consts.py`](../mkpfs/consts.py), progress/tree scan in [`mkpfs/pbar.py`](../mkpfs/pbar.py), helpers in [`mkpfs/utils.py`](../mkpfs/utils.py).
|
|
20
|
+
- Current CLI surface: `create`, `check` (`verify` alias), `ls`, `info`, `analyze` (`analyse` alias), and `extract`; keep docs and smoke tests aligned.
|
|
21
|
+
- CLI smoke test anchor: [`tests/test_main.py`](../tests/test_main.py) validates help output text and should be updated when CLI description text changes.
|
|
22
|
+
- Convenience validation script: [`run-tests.sh`](../run-tests.sh) runs `uv sync`, installs pre-commit hooks, runs Ruff format/check with `--fix`, then runs pytest.
|
|
23
|
+
|
|
24
|
+
## Related Projects Knowledge Base
|
|
25
|
+
|
|
26
|
+
### ShadowMountPlus
|
|
27
|
+
|
|
28
|
+
- Repository: https://github.com/drakmor/ShadowMountPlus
|
|
29
|
+
- Submodule folder: [related-projects/shadowmountplus](../related-projects/shadowmountplus)
|
|
30
|
+
- Maintained research report: [related-projects/ShadowMountPlus.md](../related-projects/ShadowMountPlus.md)
|
|
31
|
+
|
|
32
|
+
Short summary:
|
|
33
|
+
|
|
34
|
+
- ShadowMountPlus auto-detects game folders and image files, mounts them, stages metadata, and registers titles for launch.
|
|
35
|
+
- Supported image extensions: .ffpkg (ufs), .exfat (exfatfs), .ffpfs (pfs, experimental).
|
|
36
|
+
- For .ffpfs, mounting uses LVD attach + pfs nmount options and then validates mounted block size vs chosen sector size.
|
|
37
|
+
- Practical compatibility requirements for generated images include image-root layout, valid sce_sys/param.json, and eboot.bin present at image root.
|
|
38
|
+
|
|
39
|
+
How to inspect this knowledge quickly:
|
|
40
|
+
|
|
41
|
+
- Start with the report: [related-projects/ShadowMountPlus.md](../related-projects/ShadowMountPlus.md).
|
|
42
|
+
- Then inspect original source code under: [related-projects/shadowmountplus](../related-projects/shadowmountplus).
|
|
43
|
+
- Priority files for mount and filesystem behavior:
|
|
44
|
+
- [related-projects/shadowmountplus/src/sm_image.c](../related-projects/shadowmountplus/src/sm_image.c)
|
|
45
|
+
- [related-projects/shadowmountplus/include/sm_mount_defs.h](../related-projects/shadowmountplus/include/sm_mount_defs.h)
|
|
46
|
+
- [related-projects/shadowmountplus/src/sm_mount_device.c](../related-projects/shadowmountplus/src/sm_mount_device.c)
|
|
47
|
+
- [related-projects/shadowmountplus/src/sm_scan_tree.c](../related-projects/shadowmountplus/src/sm_scan_tree.c)
|
|
48
|
+
- [related-projects/shadowmountplus/src/sm_scan.c](../related-projects/shadowmountplus/src/sm_scan.c)
|
|
49
|
+
- [related-projects/shadowmountplus/src/sm_gameinfo.c](../related-projects/shadowmountplus/src/sm_gameinfo.c)
|
|
50
|
+
- [related-projects/shadowmountplus/src/sm_install.c](../related-projects/shadowmountplus/src/sm_install.c)
|
|
51
|
+
- [related-projects/shadowmountplus/src/sm_filesystem.c](../related-projects/shadowmountplus/src/sm_filesystem.c)
|
|
52
|
+
- [related-projects/shadowmountplus/src/sm_config_mount.c](../related-projects/shadowmountplus/src/sm_config_mount.c)
|
|
53
|
+
- [related-projects/shadowmountplus/config.ini.example](../related-projects/shadowmountplus/config.ini.example)
|
|
54
|
+
|
|
55
|
+
### PKGTool
|
|
56
|
+
|
|
57
|
+
- Repository/source: https://github.com/thesupersonic16/PKGTool
|
|
58
|
+
- Artifact folder: [related-projects/pkgtool](../related-projects/pkgtool)
|
|
59
|
+
- Deep summary: [related-projects/pkgtool.md](../related-projects/pkgtool.md)
|
|
60
|
+
|
|
61
|
+
Short summary:
|
|
62
|
+
|
|
63
|
+
- PKGTool provides a practical parser/extractor for `.pkg` archives through `PKGArchive` and a partial repack writer.
|
|
64
|
+
- On-disk table entries are fixed `0x54` bytes and use little-endian integer fields in this implementation.
|
|
65
|
+
- Decompression is custom marker/back-reference based (`ReadAndDecompress`) and loops to decompressed size.
|
|
66
|
+
- Writer currently leaves CRC unimplemented and writes entries as uncompressed with zeroed compression/attribute block.
|
|
67
|
+
- Repack behavior is non-recursive and effectively basename-oriented by default, which matters for faithful recreation tooling.
|
|
68
|
+
|
|
69
|
+
How to inspect this knowledge quickly:
|
|
70
|
+
|
|
71
|
+
- Start with summary: [related-projects/pkgtool.md](../related-projects/pkgtool.md)
|
|
72
|
+
- Validate against source folder: [related-projects/pkgtool](../related-projects/pkgtool)
|
|
73
|
+
- Priority files/pages:
|
|
74
|
+
- [related-projects/pkgtool/PKGTool/PKGArchive.cs](../related-projects/pkgtool/PKGTool/PKGArchive.cs)
|
|
75
|
+
- [related-projects/pkgtool/PKGTool/Program.cs](../related-projects/pkgtool/PKGTool/Program.cs)
|
|
76
|
+
- [related-projects/pkgtool/PKGTool/PKGTool.csproj](../related-projects/pkgtool/PKGTool/PKGTool.csproj)
|
|
77
|
+
- [related-projects/pkgtool/PKGTool.sln](../related-projects/pkgtool/PKGTool.sln)
|
|
78
|
+
- [related-projects/pkgtool/.gitmodules](../related-projects/pkgtool/.gitmodules)
|
|
79
|
+
- [related-projects/pkgtool/HedgeLib/HedgeLib/IO/ExtendedBinary.cs](../related-projects/pkgtool/HedgeLib/HedgeLib/IO/ExtendedBinary.cs)
|
|
80
|
+
- [related-projects/pkgtool/HedgeLib/HedgeLib/Archives/Archive.cs](../related-projects/pkgtool/HedgeLib/HedgeLib/Archives/Archive.cs)
|
|
81
|
+
- [related-projects/pkgtool/HedgeLib/HedgeLib/Archives/ArchiveFile.cs](../related-projects/pkgtool/HedgeLib/HedgeLib/Archives/ArchiveFile.cs)
|
|
82
|
+
|
|
83
|
+
### LibOrbisPkg
|
|
84
|
+
|
|
85
|
+
- Repository/source: https://github.com/maxton/LibOrbisPkg
|
|
86
|
+
- Artifact folder: [related-projects/liborbispkg](../related-projects/liborbispkg)
|
|
87
|
+
- Deep summary: [related-projects/liborbispkg.md](../related-projects/liborbispkg.md)
|
|
88
|
+
|
|
89
|
+
Short summary:
|
|
90
|
+
|
|
91
|
+
- LibOrbisPkg is a full PKG and PFS toolkit with reusable library code, GUI and CLI tools, tests, and Binary Template references.
|
|
92
|
+
- The PFS implementation includes tree modeling, inode and dirent serialization, flat path table generation, signed outer-image layout, and optional AES-XTS encryption.
|
|
93
|
+
- The PKG layer derives developer-controlled keys from Content ID and passcode, exposes fake-PKG EKPFS recovery, and carries the PFS offsets, flags, and digests needed to open nested images.
|
|
94
|
+
- PFSC support is asymmetric: the reader handles compressed and direct sectors, while the bundled writer emits header plus full-block mapping for nested `pfs_image.dat` content.
|
|
95
|
+
- A notable compatibility detail is the `newCrypt` branch in `PfsGenEncKey`, which is triggered from PKG `pfs_flags` during PFS reads.
|
|
96
|
+
|
|
97
|
+
How to inspect this knowledge quickly:
|
|
98
|
+
|
|
99
|
+
- Start with summary: [related-projects/liborbispkg.md](../related-projects/liborbispkg.md)
|
|
100
|
+
- Validate against source folder: [related-projects/liborbispkg](../related-projects/liborbispkg)
|
|
101
|
+
- Priority files/pages:
|
|
102
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/PFSBuilder.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/PFSBuilder.cs)
|
|
103
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/PfsReader.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/PfsReader.cs)
|
|
104
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/PfsStructs.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/PfsStructs.cs)
|
|
105
|
+
- [related-projects/liborbispkg/LibOrbisPkg/Util/Crypto.cs](../related-projects/liborbispkg/LibOrbisPkg/Util/Crypto.cs)
|
|
106
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/FlatPathTable.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/FlatPathTable.cs)
|
|
107
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/FSTree.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/FSTree.cs)
|
|
108
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/PFSCReader.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/PFSCReader.cs)
|
|
109
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PFS/PFSCWriter.cs](../related-projects/liborbispkg/LibOrbisPkg/PFS/PFSCWriter.cs)
|
|
110
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PKG/Pkg.cs](../related-projects/liborbispkg/LibOrbisPkg/PKG/Pkg.cs)
|
|
111
|
+
- [related-projects/liborbispkg/LibOrbisPkg/PKG/Entry.cs](../related-projects/liborbispkg/LibOrbisPkg/PKG/Entry.cs)
|
|
112
|
+
- [related-projects/liborbispkg/PkgTool/Program.cs](../related-projects/liborbispkg/PkgTool/Program.cs)
|
|
113
|
+
- [related-projects/liborbispkg/LibOrbisPkgTests/PfsReaderTests.cs](../related-projects/liborbispkg/LibOrbisPkgTests/PfsReaderTests.cs)
|
|
114
|
+
- [related-projects/liborbispkg/LibOrbisPkgTests/PkgBuildTest.cs](../related-projects/liborbispkg/LibOrbisPkgTests/PkgBuildTest.cs)
|
|
115
|
+
|
|
116
|
+
### LibOrbisPkg Wiki
|
|
117
|
+
|
|
118
|
+
- Repository/source: https://github.com/maxton/LibOrbisPkg.wiki.git
|
|
119
|
+
- Artifact folder: [related-projects/liborbispkg-wiki](../related-projects/liborbispkg-wiki)
|
|
120
|
+
- Deep summary: [related-projects/liborbispkg-wiki.md](../related-projects/liborbispkg-wiki.md)
|
|
121
|
+
|
|
122
|
+
Short summary:
|
|
123
|
+
|
|
124
|
+
- The wiki is a compact orientation layer for the LibOrbisPkg library plus the PkgEditor and PkgTool frontends.
|
|
125
|
+
- Its highest-value page is the PKG crypto note covering passcode-derived keys, EKPFS, PFS key derivation, and `ENTRY_KEYS` / `IMAGE_KEY` roles.
|
|
126
|
+
- The PkgEditor page captures user-facing PKG build requirements such as the 36-character content ID format and the required `Image0/sce_sys/param.sfo`.
|
|
127
|
+
- The library page is best used as a namespace and capability map, not a stable API contract.
|
|
128
|
+
- The PkgTool wiki page is currently only a placeholder and should not be treated as authoritative CLI documentation.
|
|
129
|
+
|
|
130
|
+
How to inspect this knowledge quickly:
|
|
131
|
+
|
|
132
|
+
- Start with summary: [related-projects/liborbispkg-wiki.md](../related-projects/liborbispkg-wiki.md)
|
|
133
|
+
- Validate against snapshot folder: [related-projects/liborbispkg-wiki](../related-projects/liborbispkg-wiki)
|
|
134
|
+
- Priority files/pages:
|
|
135
|
+
- [related-projects/liborbispkg-wiki/PKG-Information.md](../related-projects/liborbispkg-wiki/PKG-Information.md)
|
|
136
|
+
- [related-projects/liborbispkg-wiki/PkgEditor.md](../related-projects/liborbispkg-wiki/PkgEditor.md)
|
|
137
|
+
- [related-projects/liborbispkg-wiki/Library.md](../related-projects/liborbispkg-wiki/Library.md)
|
|
138
|
+
- [related-projects/liborbispkg-wiki/Home.md](../related-projects/liborbispkg-wiki/Home.md)
|
|
139
|
+
- [related-projects/liborbispkg-wiki/PkgTool.md](../related-projects/liborbispkg-wiki/PkgTool.md)
|
|
140
|
+
- [related-projects/liborbispkg-wiki/manifest.md](../related-projects/liborbispkg-wiki/manifest.md)
|
|
141
|
+
|
|
142
|
+
### kstuff-lite
|
|
143
|
+
|
|
144
|
+
- Repository/source: https://github.com/EchoStretch/kstuff-lite
|
|
145
|
+
- Artifact folder: [related-projects/kstuff-lite](../related-projects/kstuff-lite)
|
|
146
|
+
- Deep summary: [related-projects/kstuff-lite.md](../related-projects/kstuff-lite.md)
|
|
147
|
+
|
|
148
|
+
Short summary:
|
|
149
|
+
|
|
150
|
+
- kstuff-lite is a PS5 payload bundle with a loader, kernel syscall hooks, mount automation, and crypto helpers.
|
|
151
|
+
- The loader can mount UFS, PFS, or exFAT images from a source directory and falls back to the raw folder path if mounting fails.
|
|
152
|
+
- `KSTUFF_OBS=1` enables observability artifacts and shared-area snapshot support.
|
|
153
|
+
- The crypto stack focuses on `fpkg`, `FSELF`, and debug NPDRM handling, with small caches for repeated HMAC and XTS work.
|
|
154
|
+
|
|
155
|
+
How to inspect this knowledge quickly:
|
|
156
|
+
|
|
157
|
+
- Start with summary: [related-projects/kstuff-lite.md](../related-projects/kstuff-lite.md)
|
|
158
|
+
- Validate against source folder: [related-projects/kstuff-lite](../related-projects/kstuff-lite)
|
|
159
|
+
- Priority files:
|
|
160
|
+
- [related-projects/kstuff-lite/README.md](../related-projects/kstuff-lite/README.md)
|
|
161
|
+
- [related-projects/kstuff-lite/ci-ps5-kstuff-ldr.sh](../related-projects/kstuff-lite/ci-ps5-kstuff-ldr.sh)
|
|
162
|
+
- [related-projects/kstuff-lite/.gitmodules](../related-projects/kstuff-lite/.gitmodules)
|
|
163
|
+
- [related-projects/kstuff-lite/ps5-kstuff/Makefile](../related-projects/kstuff-lite/ps5-kstuff/Makefile)
|
|
164
|
+
- [related-projects/kstuff-lite/ps5-kstuff-ldr/main.c](../related-projects/kstuff-lite/ps5-kstuff-ldr/main.c)
|
|
165
|
+
- [related-projects/kstuff-lite/ps5-kstuff/uelf/main.c](../related-projects/kstuff-lite/ps5-kstuff/uelf/main.c)
|
|
166
|
+
- [related-projects/kstuff-lite/ps5-kstuff/uelf/pfs_crypto.c](../related-projects/kstuff-lite/ps5-kstuff/uelf/pfs_crypto.c)
|
|
167
|
+
- [related-projects/kstuff-lite/ps5-kstuff/uelf/fpkg.c](../related-projects/kstuff-lite/ps5-kstuff/uelf/fpkg.c)
|
|
168
|
+
- [related-projects/kstuff-lite/ps5-kstuff/uelf/fself.c](../related-projects/kstuff-lite/ps5-kstuff/uelf/fself.c)
|
|
169
|
+
- [related-projects/kstuff-lite/ps5-kstuff/uelf/npdrm.c](../related-projects/kstuff-lite/ps5-kstuff/uelf/npdrm.c)
|
|
170
|
+
|
|
171
|
+
### Other Knowledge Sources
|
|
172
|
+
|
|
173
|
+
- Repository/source: mixed local archive from PSDevWiki, ShadPKG docs, and Wololo
|
|
174
|
+
- Artifact folder: [related-projects/other-knowledge-sources](../related-projects/other-knowledge-sources)
|
|
175
|
+
- Deep summary: [related-projects/other-knowledge-sources.md](../related-projects/other-knowledge-sources.md)
|
|
176
|
+
|
|
177
|
+
Short summary:
|
|
178
|
+
|
|
179
|
+
- This archive combines permanent PSDevWiki snapshots, a detailed ShadPKG HOWWORKS markdown, and a Wololo article preserving Flatz's FPKG writeup.
|
|
180
|
+
- The ShadPKG markdown is the strongest implementation-level source here for PKG decryption, PFS key derivation, AES-XTS, PFSC block handling, and extraction flow.
|
|
181
|
+
- The PSDevWiki PFS snapshot and its local derivative index are the clearest structure-oriented references for headers, inode and dirent layout, `uroot`, and `flat_path_table` behavior.
|
|
182
|
+
- Provenance and re-export details are tracked inside the folder README and `source-manifest.md`, including archive date, publication or revision identity, and upstream URLs.
|
|
183
|
+
|
|
184
|
+
How to inspect this knowledge quickly:
|
|
185
|
+
|
|
186
|
+
- Start with summary: [related-projects/other-knowledge-sources.md](../related-projects/other-knowledge-sources.md)
|
|
187
|
+
- Validate against archive folder: [related-projects/other-knowledge-sources](../related-projects/other-knowledge-sources)
|
|
188
|
+
- Priority files/pages:
|
|
189
|
+
- [related-projects/other-knowledge-sources/shadpkg-howworks-raw.md](../related-projects/other-knowledge-sources/shadpkg-howworks-raw.md)
|
|
190
|
+
- [related-projects/other-knowledge-sources/psdevwiki-pfs-index.md](../related-projects/other-knowledge-sources/psdevwiki-pfs-index.md)
|
|
191
|
+
- [related-projects/other-knowledge-sources/psdevwiki-pfs.html](../related-projects/other-knowledge-sources/psdevwiki-pfs.html)
|
|
192
|
+
- [related-projects/other-knowledge-sources/psdevwiki-pkg-files.html](../related-projects/other-knowledge-sources/psdevwiki-pkg-files.html)
|
|
193
|
+
- [related-projects/other-knowledge-sources/source-manifest.md](../related-projects/other-knowledge-sources/source-manifest.md)
|
|
194
|
+
|
|
195
|
+
## Update Standard
|
|
196
|
+
|
|
197
|
+
- Keep each entry factual, short, and tied to concrete source links.
|
|
198
|
+
- Prefer stable paths over temporary artifacts.
|
|
199
|
+
- Do not store scratch notes here; use tmp for transient work.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: HTML reporting
|
|
3
|
+
description: How to create polished HTML reports for detailed answers and research
|
|
4
|
+
type: reference
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
When the user asks for a detailed answer or research, produce the normal text response and
|
|
8
|
+
also generate a companion modern and detailed HTML report.
|
|
9
|
+
|
|
10
|
+
Save the HTML file under `./tmp/` and include a clickable markdown link to it in the response.
|
|
11
|
+
|
|
12
|
+
Make the report clean and readable:
|
|
13
|
+
|
|
14
|
+
- Use a proper HTML5 document with a descriptive title.
|
|
15
|
+
- Include a short executive summary near the top.
|
|
16
|
+
- Organize the body with clear section headings.
|
|
17
|
+
- Use readable spacing, a constrained content width, and simple typography.
|
|
18
|
+
- Style code blocks, tables, and links clearly.
|
|
19
|
+
- Include a references section when sources are involved.
|
|
20
|
+
|
|
21
|
+
Keep the HTML self-contained unless external assets are unavoidable. Prefer inline CSS for simple, portable reports.
|
|
22
|
+
|
|
23
|
+
Do not replace the chat response with HTML; the HTML is a companion artifact.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: markdown-style
|
|
3
|
+
description: Project conventions for README, wiki, and Markdown formatting (icons, badges, colors, tone, and file layout)
|
|
4
|
+
type: project
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Markdown Style Guide
|
|
8
|
+
|
|
9
|
+
Purpose: capture the visual and prose style we use across README.md and short wiki-style markdown files so contributors produce consistent, high-quality docs.
|
|
10
|
+
|
|
11
|
+
Keep this file short and actionable. If you change visual assets or global colors, update this rule.
|
|
12
|
+
|
|
13
|
+
## High-level tone and voice
|
|
14
|
+
- Practical, concise, and slightly technical: assume the reader knows basic tooling but keep onboarding friendly.
|
|
15
|
+
- Write in active voice, present tense. Prefer short paragraphs and bullet lists.
|
|
16
|
+
- Avoid marketing hyperbole, be factual about capabilities and workflows.
|
|
17
|
+
- Do not foreground lifecycle labels such as alpha or beta in user-facing docs unless explicitly requested.
|
|
18
|
+
|
|
19
|
+
## Visual identity
|
|
20
|
+
- Primary brand color: blue. Example palette (use these hex colors in images and banners):
|
|
21
|
+
- Primary: #2563EB (blue)
|
|
22
|
+
- Accent: #3B82F6 (light blue)
|
|
23
|
+
- Surface / panels: #EFF6FF / #DBEAFE (very pale blues)
|
|
24
|
+
- Neutral dark: #0F172A / #0B1733 (text, dark backgrounds)
|
|
25
|
+
- Iconography: use UTF-8 emoji for section headings and quick-links. Keep icons consistent and semantically appropriate. Examples:
|
|
26
|
+
- 📚 Documentation
|
|
27
|
+
- 📦 Install
|
|
28
|
+
- ⌨️ Command Overview
|
|
29
|
+
- 🖥️ GUI
|
|
30
|
+
- 💙 Thanks (contributors)
|
|
31
|
+
- 🔗 Related projects
|
|
32
|
+
- 💖 Sponsor
|
|
33
|
+
- Badges: prefer shields.io for badges. Style: `style=for-the-badge` for the top cluster. Include: status, PyPI (version), license, Python version. Use flat-square for a second-row group when needed.
|
|
34
|
+
|
|
35
|
+
## Hero / title block
|
|
36
|
+
- Center the hero block. Include in order:
|
|
37
|
+
1. Project icon image (assets/images/icon.png) — rounded with subtle shadow and light border. Example inline style: `style="border-radius:30px; box-shadow:0 10px 30px rgba(37,99,235,0.18); border:4px solid rgba(14,165,233,0.08);"`.
|
|
38
|
+
2. H1: `ProjectName: ShortTagline` (e.g., `MkPFS: Make PSF`). Keep the H1 short.
|
|
39
|
+
3. One-line product sentence (H3 or short paragraph) that expands the acronym and lists the three delivery surfaces when relevant (CLI, library, GUI).
|
|
40
|
+
4. Top badge cluster (status, PyPI, license, python).
|
|
41
|
+
5. Quick-links row (emoji-prefixed links separated by middot ·). Order:
|
|
42
|
+
- 📦 Install · ⌨️ Commands · 💙 Thanks · 🔗 Related projects
|
|
43
|
+
- then a blank line
|
|
44
|
+
- then the sponsor entry on its own line: `💖 Sponsor` (linked badge)
|
|
45
|
+
|
|
46
|
+
## Images and screenshots
|
|
47
|
+
- Store project visuals under `assets/images/` (not `tmp/` and not scattered). Use descriptive names: `hero-banner.svg`, `screenshot-create.svg`, `screenshot-check.svg`, `screenshot-gui.svg`.
|
|
48
|
+
- PNG icons ok for favicon/logo; larger illustrations should be SVG when possible.
|
|
49
|
+
- Image styling in README: reference images by path only (no base64). Use alt text. Avoid calling them "placeholders" in public docs; instead caption them (e.g., "Screenshot: Create workflow").
|
|
50
|
+
|
|
51
|
+
## Section structure and headings
|
|
52
|
+
- Use emoji-prefixed headings for main sections. Keep consistent H2/H3 hierarchy.
|
|
53
|
+
- Typical README section order:
|
|
54
|
+
1. Why / Overview
|
|
55
|
+
2. Main Features (short bullets)
|
|
56
|
+
3. Installation
|
|
57
|
+
4. Command Overview (subcommands listed with short purpose; do not enumerate all flags)
|
|
58
|
+
5. GUI (if present)
|
|
59
|
+
6. Sponsorship (prominent, near top/hero or before contributors)
|
|
60
|
+
7. Special thanks and Contributors (short list)
|
|
61
|
+
8. Related projects (single curated list of external links)
|
|
62
|
+
9. Contributing (short callout linking to CONTRIBUTING.md)
|
|
63
|
+
|
|
64
|
+
## Command blocks and examples
|
|
65
|
+
- Show subcommand usage at the top-level only. For each subcommand, include a one-line summary and a single example invocation (no exhaustive param list in README). Example style:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
mkpfs create --path ./input --output ./game.ffpfs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- Use the terminal icon (⌨️) for the Command Overview heading.
|
|
72
|
+
|
|
73
|
+
## Links and documentation references
|
|
74
|
+
- Prefer linking to in-repo guidance in `README.md` or `related-projects/`.
|
|
75
|
+
- Keep public links focused on the repository, release artifacts, and source material.
|
|
76
|
+
|
|
77
|
+
## Style of writing and micro-rules
|
|
78
|
+
- Keep sentences short (<= 24 words where practical).
|
|
79
|
+
- Use code font (`code`) for file names and command tokens.
|
|
80
|
+
- Use backtick code blocks for CLI examples; use fenced triple-backtick with language when showing code.
|
|
81
|
+
- Use bullets for feature lists and checklists.
|
|
82
|
+
- Keep sponsorship ask polite and specific (what support buys: tests, packaging, docs).
|
|
83
|
+
- When writing English prose for README, docs, comments, or wiki pages, avoid using the em dash (—). Prefer commas, hyphens, 'title: subtitle' structure, or a semicolon to separate related ideas in the same paragraph.
|
|
84
|
+
- Do NOT use placeholder language that signals unfinished work (remove lines like: "The screenshots below are polished placeholders…").
|
|
85
|
+
|
|
86
|
+
## Metadata alignment
|
|
87
|
+
- Ensure README top claims align with `pyproject.toml` (name, version, supported Python, license, project URLs).
|
|
88
|
+
- If README content changes project positioning significantly, update `pyproject.toml` accordingly.
|
|
89
|
+
|
|
90
|
+
## Contribution & CI notes
|
|
91
|
+
- Include a short contributing pointer linking to `CONTRIBUTING.md`.
|
|
92
|
+
- Example common-checks snippet should reference our tooling:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uv sync --group dev
|
|
96
|
+
uv run --frozen pytest
|
|
97
|
+
uv run --frozen ruff check .
|
|
98
|
+
uv run --frozen ruff format .
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
- Do not commit files from `./tmp/`.
|
|
102
|
+
|
|
103
|
+
## File-level formatting rules
|
|
104
|
+
- Keep line-length reasonable (wrap at ~100 columns for prose in README).
|
|
105
|
+
- Use Markdown (CommonMark) only — avoid HTML unless necessary for image styling (small inline style for hero icon allowed as above).
|
|
106
|
+
|
|
107
|
+
## Enforcement and verification
|
|
108
|
+
- Before merging README or major docs changes run:
|
|
109
|
+
- `uv run --frozen ruff check .`
|
|
110
|
+
- `uv run --frozen pytest`
|
|
111
|
+
|
|
112
|
+
## Examples and snippets
|
|
113
|
+
- Hero icon HTML: use a rounded image with subtle shadow and small border (see top of README for exact style example).
|
|
114
|
+
- Quick links format: Emoji + text links separated by middot `·`. Put Sponsor on its own line after a blank line.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
Keep this guideline lightweight — update it when the visual direction changes or when new global assets (icons, banners) are added.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: PyPI packaging guidelines
|
|
3
|
+
description: Practical checklist for publishing a good Python library to PyPI
|
|
4
|
+
type: reference
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use `pyproject.toml` as the primary source of packaging metadata.
|
|
8
|
+
|
|
9
|
+
Keep core metadata explicit: name, version, supported Python versions, runtime dependencies, license, README, keywords, classifiers, and project URLs.
|
|
10
|
+
|
|
11
|
+
Build and publish both source distributions and wheels.
|
|
12
|
+
|
|
13
|
+
Prefer a package directory layout for multi-file libraries.
|
|
14
|
+
|
|
15
|
+
Keep dependency groups separate from runtime dependencies when possible.
|
|
16
|
+
|
|
17
|
+
For a small pure-Python library, keep metadata centralized, document the project clearly in the README, and ensure the README renders safely on PyPI.
|
|
18
|
+
|
|
19
|
+
## README guidance
|
|
20
|
+
|
|
21
|
+
Use a supported format: Markdown, reStructuredText, or plain text.
|
|
22
|
+
|
|
23
|
+
Keep the README at the repository root and use it as the long description.
|
|
24
|
+
|
|
25
|
+
Make the content renderer-safe for PyPI and validate builds before publishing.
|
|
26
|
+
|
|
27
|
+
## Repo-specific notes
|
|
28
|
+
|
|
29
|
+
- This repository is an active package (`mkpfs`) with CLI entrypoint `mkpfs = "mkpfs.cli:main"`.
|
|
30
|
+
- Keep the public README accurate for current command surface: `create`, `check` (`verify` alias), `ls`, `info`, `analyze` (`analyse` alias), and `extract`.
|
|
31
|
+
- Validate release artifacts with `uv build` and `uv run --frozen twine check dist/*` before publishing.
|
|
32
|
+
- Use `./tmp/` only for ephemeral planning, scratch files, and generated HTML reports.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- https://packaging.python.org/en/latest/overview/
|
|
37
|
+
- https://packaging.python.org/en/latest/specifications/
|
|
38
|
+
- https://packaging.python.org/en/latest/guides/making-a-pypi-friendly-readme/
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: readme-style-guidelines
|
|
3
|
+
description: Project conventions for README, wiki, and Markdown formatting (icons, badges, colors, tone, and file layout)
|
|
4
|
+
type: project
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# README & Markdown Style Guide
|
|
8
|
+
|
|
9
|
+
Purpose: capture the visual and prose style we use across README.md and short wiki-style markdown files so contributors produce consistent, high-quality docs.
|
|
10
|
+
|
|
11
|
+
Keep this file short and actionable. If you change visual assets or global colors, update this rule.
|
|
12
|
+
|
|
13
|
+
## High-level tone and voice
|
|
14
|
+
- Practical, concise, and slightly technical: assume the reader knows basic tooling but keep onboarding friendly.
|
|
15
|
+
- Write in active voice, present tense. Prefer short paragraphs and bullet lists.
|
|
16
|
+
- Avoid marketing hyperbole, be factual about capabilities and workflows.
|
|
17
|
+
- Do not foreground lifecycle labels such as alpha or beta in user-facing docs unless explicitly requested.
|
|
18
|
+
|
|
19
|
+
## Visual identity
|
|
20
|
+
- Primary brand color: blue. Example palette (use these hex colors in images and banners):
|
|
21
|
+
- Primary: #2563EB (blue)
|
|
22
|
+
- Accent: #3B82F6 (light blue)
|
|
23
|
+
- Surface / panels: #EFF6FF / #DBEAFE (very pale blues)
|
|
24
|
+
- Neutral dark: #0F172A / #0B1733 (text, dark backgrounds)
|
|
25
|
+
- Iconography: use UTF-8 emoji for section headings and quick-links. Keep icons consistent and semantically appropriate. Examples:
|
|
26
|
+
- 📚 Documentation
|
|
27
|
+
- 📦 Install
|
|
28
|
+
- ⌨️ Command Overview
|
|
29
|
+
- 🖥️ GUI
|
|
30
|
+
- 💙 Thanks (contributors)
|
|
31
|
+
- 🔗 Related projects
|
|
32
|
+
- 💖 Sponsor
|
|
33
|
+
- Badges: prefer shields.io for badges. Style: `style=for-the-badge` for the top cluster. Include: status, PyPI (version), license, Python version. Use flat-square for a second-row group when needed.
|
|
34
|
+
|
|
35
|
+
## Hero / title block
|
|
36
|
+
- Center the hero block. Include in order:
|
|
37
|
+
1. Project icon image (assets/images/icon.png) — rounded with subtle shadow and light border. Example inline style: `style="border-radius:30px; box-shadow:0 10px 30px rgba(37,99,235,0.18); border:4px solid rgba(14,165,233,0.08);"`.
|
|
38
|
+
2. H1: `ProjectName: ShortTagline` (e.g., `MkPFS: Make PSF`). Keep the H1 short.
|
|
39
|
+
3. One-line product sentence (H3 or short paragraph) that expands the acronym and lists the three delivery surfaces when relevant (CLI, library, GUI).
|
|
40
|
+
4. Top badge cluster (status, PyPI, license, python).
|
|
41
|
+
5. Quick-links row (emoji-prefixed links separated by middot ·). Order:
|
|
42
|
+
- 📦 Install · ⌨️ Commands · 🖥️ GUI · 💙 Thanks · 🔗 Related projects
|
|
43
|
+
- then a blank line
|
|
44
|
+
- then the sponsor entry on its own line: `💖 Sponsor` (linked badge)
|
|
45
|
+
|
|
46
|
+
## Images and screenshots
|
|
47
|
+
- Store project visuals under `assets/images/` (not `tmp/` and not scattered). Use descriptive names: `hero-banner.svg`, `screenshot-create.svg`, `screenshot-check.svg`, `screenshot-gui.svg`.
|
|
48
|
+
- PNG icons ok for favicon/logo; larger illustrations should be SVG when possible.
|
|
49
|
+
- Image styling in README: reference images by path only (no base64). Use alt text. Avoid calling them “placeholders” in public docs; instead caption them (e.g., “Screenshot: Create workflow”).
|
|
50
|
+
|
|
51
|
+
## Section structure and headings
|
|
52
|
+
- Use emoji-prefixed headings for main sections. Keep consistent H2/H3 hierarchy.
|
|
53
|
+
- Typical README section order:
|
|
54
|
+
1. Why / Overview
|
|
55
|
+
2. Main Features (short bullets)
|
|
56
|
+
3. Installation
|
|
57
|
+
4. Command Overview (subcommands listed with short purpose; do not enumerate all flags)
|
|
58
|
+
5. GUI (if present)
|
|
59
|
+
6. Sponsorship (prominent, near top/hero or before contributors)
|
|
60
|
+
7. Contributors & Thanks (short list)
|
|
61
|
+
8. Related projects (single curated list)
|
|
62
|
+
9. Contributing (short callout linking to CONTRIBUTING.md)
|
|
63
|
+
|
|
64
|
+
## Command blocks and examples
|
|
65
|
+
- Show subcommand usage at the top-level only. For each subcommand, include a one-line summary and a single example invocation (no exhaustive param list in README). Example style:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
mkpfs create --path ./input --output ./game.ffpfs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- Use the terminal icon (⌨️) for the Command Overview heading.
|
|
72
|
+
|
|
73
|
+
## Links and documentation references
|
|
74
|
+
- Prefer linking to in-repo guidance in `README.md` or `related-projects/`.
|
|
75
|
+
- Keep public links focused on the repository, release artifacts, and source material.
|
|
76
|
+
|
|
77
|
+
## Style of writing and micro-rules
|
|
78
|
+
- Keep sentences short (<= 24 words where practical).
|
|
79
|
+
- Use code font (`code`) for file names and command tokens.
|
|
80
|
+
- Use backtick code blocks for CLI examples; use fenced triple-backtick with language when showing code.
|
|
81
|
+
- Use bullets for feature lists and checklists.
|
|
82
|
+
- Keep sponsorship ask polite and specific (what support buys: tests, packaging, docs).
|
|
83
|
+
- Do NOT use placeholder language that signals unfinished work (e.g., remove lines like: “The screenshots below are polished placeholders…”).
|
|
84
|
+
|
|
85
|
+
## Metadata alignment
|
|
86
|
+
- Ensure README top claims align with `pyproject.toml` (name, version, supported Python, license, project URLs).
|
|
87
|
+
- If README content changes project positioning significantly, update `pyproject.toml` accordingly.
|
|
88
|
+
|
|
89
|
+
## Contribution & CI notes
|
|
90
|
+
- Include a short contributing pointer linking to `CONTRIBUTING.md`.
|
|
91
|
+
- Example common-checks snippet should reference our tooling:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
uv sync --group dev
|
|
95
|
+
uv run --frozen pytest
|
|
96
|
+
uv run --frozen ruff check .
|
|
97
|
+
uv run --frozen ruff format .
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- Do not commit files from `./tmp/`.
|
|
101
|
+
|
|
102
|
+
## File-level formatting rules
|
|
103
|
+
- Keep line-length reasonable (wrap at ~100 columns for prose in README).
|
|
104
|
+
- Use Markdown (CommonMark) only — avoid HTML unless necessary for image styling (small inline style for hero icon allowed as above).
|
|
105
|
+
|
|
106
|
+
## Enforcement and verification
|
|
107
|
+
- Before merging README or major docs changes run:
|
|
108
|
+
- `uv run --frozen ruff check .`
|
|
109
|
+
- `uv run --frozen pytest`
|
|
110
|
+
|
|
111
|
+
## Examples and snippets
|
|
112
|
+
- Hero icon HTML: use a rounded image with subtle shadow and small border (see top of README for exact style example).
|
|
113
|
+
- Quick links format: Emoji + text links separated by middot `·`. Put Sponsor on its own line after a blank line.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
Keep this guideline lightweight — update it when the visual direction changes or when new global assets (icons, banners) are added.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Temporary workspace usage
|
|
3
|
+
description: Guidance for using ./tmp for scratch files, planning, and generated artifacts
|
|
4
|
+
type: reference
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use `./tmp/` for transient work only: planning notes, scratch files, ad hoc exports, generated reports, and other temporary artifacts.
|
|
8
|
+
|
|
9
|
+
Keep one-off filenames descriptive enough to find later, but never rely on anything in `./tmp/` as permanent project state.
|
|
10
|
+
|
|
11
|
+
Do not commit files from `./tmp/`.
|
|
12
|
+
|
|
13
|
+
If a task needs a temporary helper script or intermediate output, put it under `./tmp/` and delete it when the work is done.
|
|
14
|
+
|
|
15
|
+
Prefer `./tmp/<task-name>/` for grouped work so a single task can be cleaned up quickly.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Local .venv Activation Rule
|
|
2
|
+
|
|
3
|
+
It is **CRITICAL** that the local `.venv` is activated before executing any command in this project.
|
|
4
|
+
|
|
5
|
+
Most tools, scripts, and workflows in this repository depend on the correct Python environment, and important code such as `./run-tests.sh` will fail or produce inconsistent results without it.
|
|
6
|
+
|
|
7
|
+
- You MUST activate the local `.venv` before running any commands, tests, or scripts, including but not limited to `./run-tests.sh`, CLI invocations, and automation tasks.
|
|
8
|
+
- Activating the `.venv` ensures all dependencies, correct Python version (3.11), and environment variables are present and used for the session.
|
|
9
|
+
- Do not run project scripts using the system Python or a globally installed Python interpreter.
|
|
10
|
+
|
|
11
|
+
**To activate the local environment:**
|
|
12
|
+
|
|
13
|
+
On macOS/Linux:
|
|
14
|
+
```bash
|
|
15
|
+
source .venv/bin/activate
|
|
16
|
+
```
|
|
17
|
+
On Windows:
|
|
18
|
+
```cmd
|
|
19
|
+
.venv\Scripts\activate
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- Running without the `.venv` activated may lead to missing dependencies, wrong Python version, or failures in core CLI and testing commands.
|
|
23
|
+
- If you see errors related to module imports, pip/uv/pytest/ruff not found, or Python version mismatch, double-check your environment.
|
|
24
|
+
|
|
25
|
+
**Summary:**
|
|
26
|
+
> Always `activate` the `.venv` before you do anything in this project.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(uv run:*)",
|
|
5
|
+
"Bash(./run-tests.sh)",
|
|
6
|
+
"WebSearch",
|
|
7
|
+
"Bash(python -m twine check dist/*)",
|
|
8
|
+
"Bash(uv build:*)",
|
|
9
|
+
"Bash(python3.11 --version)",
|
|
10
|
+
"Bash(git status:*)"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"autoFix": {
|
|
14
|
+
"enabled": true,
|
|
15
|
+
"format": "uv run --frozen ruff format .",
|
|
16
|
+
"lint": "uv run --frozen ruff check . --fix",
|
|
17
|
+
"test": "uv run --frozen pytest",
|
|
18
|
+
"maxRetries": 3,
|
|
19
|
+
"timeout": 60000
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fix-tests
|
|
3
|
+
description: Run checks and fix failing tests before push.
|
|
4
|
+
context: fork
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Fix Tests
|
|
8
|
+
|
|
9
|
+
Use this skill when the goal is to get the branch ready to push by repeatedly running checks and fixing failures.
|
|
10
|
+
|
|
11
|
+
1. Inspect what changed.
|
|
12
|
+
- Run `git status --short`.
|
|
13
|
+
- Review current diffs with `git diff --stat` and `git diff`.
|
|
14
|
+
|
|
15
|
+
2. Run the full local validation flow.
|
|
16
|
+
- Run pre-commit checks with `uv run --frozen pre-commit run --all-files`.
|
|
17
|
+
- Run `./run-tests.sh`.
|
|
18
|
+
|
|
19
|
+
3. Loop until clean.
|
|
20
|
+
- Group related failures by root cause.
|
|
21
|
+
- Apply minimal readable fixes that keep behavior stable unless tests show the behavior is incorrect.
|
|
22
|
+
- Add or update focused tests for each bug fix.
|
|
23
|
+
- Re-run pre-commit and the test script after each fix batch.
|
|
24
|
+
|
|
25
|
+
4. Final readiness check.
|
|
26
|
+
- Confirm both commands pass with no failures.
|
|
27
|
+
- Summarize what was fixed and list any remaining risks or follow-ups before push.
|
|
28
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: html-reporting
|
|
3
|
+
description: Generate a polished companion HTML report for detailed answers, checks, and verification outputs.
|
|
4
|
+
context: fork
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# HTML Reporting Skill
|
|
8
|
+
|
|
9
|
+
Use this skill whenever the user requests a detailed answer, research, verification, or any "check" or "report" about code, tests, or project state. The skill produces two artifacts:
|
|
10
|
+
|
|
11
|
+
1. A normal chat response (always required).
|
|
12
|
+
2. A companion, self-contained HTML5 report saved under ./tmp/ with a clickable path included in the chat response.
|
|
13
|
+
|
|
14
|
+
Guidelines and steps
|
|
15
|
+
|
|
16
|
+
1. When to use
|
|
17
|
+
- The user explicitly asks for a report, detailed answer, verification, or research.
|
|
18
|
+
- The user asks for anything to be "checked", "reported", "verified", "audited", or needs a long-form explanation that benefits from a browsable artifact.
|
|
19
|
+
|
|
20
|
+
2. Produce the normal chat response first
|
|
21
|
+
- Keep the chat response concise and to the point.
|
|
22
|
+
- Do not replace or delay the chat response in favor of the HTML. The HTML is a companion artifact only.
|
|
23
|
+
|
|
24
|
+
3. Generate the HTML report
|
|
25
|
+
- Save it under ./tmp/. Use a descriptive filename: <task>-report-YYYYMMDD-HHMMSS.html (example: tmp/report-verify-tests-20260514-102530.html).
|
|
26
|
+
- The report must be a complete HTML5 document with a descriptive <title>.
|
|
27
|
+
- Include a short executive summary near the top (1-3 sentences).
|
|
28
|
+
- Organize sections with clear headings: Summary, Findings, Commands Run, Evidence (logs, test output), Recommendations, References.
|
|
29
|
+
- Use simple inline CSS for readable typography, constrained width, and spacing.
|
|
30
|
+
- Style code blocks with monospace font and preserve whitespace.
|
|
31
|
+
- When sources are used, include a References section with clickable links.
|
|
32
|
+
- Keep the file self-contained (inline CSS). Avoid external assets unless unavoidable.
|
|
33
|
+
|
|
34
|
+
4. What to include in the report
|
|
35
|
+
- A brief context paragraph describing why the report was generated.
|
|
36
|
+
- Exact commands that were run and their outputs (truncate very large outputs but note truncation and where full output can be found if applicable).
|
|
37
|
+
- If tests were run, show failing tests and short excerpts of failure traces.
|
|
38
|
+
- A clear Recommendations section with next steps.
|
|
39
|
+
|
|
40
|
+
5. Safety and repo hygiene
|
|
41
|
+
- Save reports only under ./tmp/.
|
|
42
|
+
- Do not commit files from ./tmp/.
|
|
43
|
+
- Never include secrets, credentials, or large binary dumps in the report.
|
|
44
|
+
|
|
45
|
+
6. User-facing link
|
|
46
|
+
- In the chat response, include a clickable filesystem path to the generated HTML (markdown link to file path: ./tmp/...).
|
|
47
|
+
- If the environment doesn't support clickable file URIs, include the path and a short instruction to open it (example: `open ./tmp/filename.html`).
|
|
48
|
+
|
|
49
|
+
7. When to prefer the report
|
|
50
|
+
- Use the HTML companion for long-running investigations, multi-command verification runs, or when results are easier to digest in a formatted artifact.
|
|
51
|
+
|
|
52
|
+
8. Minimal examples
|
|
53
|
+
- Filename convention and example command to open the file.
|
|
54
|
+
|
|
55
|
+
Do not replace the chat response with the HTML. The HTML is a companion artifact only and should not hold the only copy of crucial information.
|