kpress 0.1.0__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.
- kpress-0.1.0/.agents/skills/flowmark/SKILL.md +61 -0
- kpress-0.1.0/.agents/skills/pprose-common-edit/SKILL.md +44 -0
- kpress-0.1.0/.agents/skills/pprose-compare/SKILL.md +50 -0
- kpress-0.1.0/.agents/skills/pprose-copy-edit/SKILL.md +44 -0
- kpress-0.1.0/.agents/skills/pprose-eval/SKILL.md +64 -0
- kpress-0.1.0/.agents/skills/pprose-full-edit/SKILL.md +43 -0
- kpress-0.1.0/.agents/skills/pprose-review/SKILL.md +48 -0
- kpress-0.1.0/.agents/skills/repren/SKILL.md +47 -0
- kpress-0.1.0/.agents/skills/tbd/SKILL.md +293 -0
- kpress-0.1.0/.agents/skills/using-kpress/SKILL.md +76 -0
- kpress-0.1.0/.claude/.gitignore +2 -0
- kpress-0.1.0/.claude/hooks/tbd-closing-reminder.sh +15 -0
- kpress-0.1.0/.claude/scripts/ensure-gh-cli.sh +123 -0
- kpress-0.1.0/.claude/scripts/tbd-session.sh +27 -0
- kpress-0.1.0/.claude/settings.json +47 -0
- kpress-0.1.0/.claude/skills/flowmark/SKILL.md +61 -0
- kpress-0.1.0/.claude/skills/pprose-common-edit/SKILL.md +44 -0
- kpress-0.1.0/.claude/skills/pprose-compare/SKILL.md +50 -0
- kpress-0.1.0/.claude/skills/pprose-copy-edit/SKILL.md +44 -0
- kpress-0.1.0/.claude/skills/pprose-eval/SKILL.md +64 -0
- kpress-0.1.0/.claude/skills/pprose-full-edit/SKILL.md +43 -0
- kpress-0.1.0/.claude/skills/pprose-review/SKILL.md +48 -0
- kpress-0.1.0/.claude/skills/repren/SKILL.md +47 -0
- kpress-0.1.0/.claude/skills/tbd/SKILL.md +293 -0
- kpress-0.1.0/.claude/skills/using-kpress/SKILL.md +76 -0
- kpress-0.1.0/.codex/ensure-gh-cli.sh +123 -0
- kpress-0.1.0/.codex/hooks.json +47 -0
- kpress-0.1.0/.codex/tbd-closing-reminder.sh +15 -0
- kpress-0.1.0/.codex/tbd-session.sh +27 -0
- kpress-0.1.0/.copier-answers.yml +9 -0
- kpress-0.1.0/.flowmarkignore +23 -0
- kpress-0.1.0/.github/workflows/ci.yml +146 -0
- kpress-0.1.0/.github/workflows/publish.yml +71 -0
- kpress-0.1.0/.gitignore +185 -0
- kpress-0.1.0/.npmrc +8 -0
- kpress-0.1.0/.tbd/.gitattributes +2 -0
- kpress-0.1.0/.tbd/.gitignore +21 -0
- kpress-0.1.0/.tbd/config.yml +103 -0
- kpress-0.1.0/AGENTS.md +101 -0
- kpress-0.1.0/CONTRIBUTING.md +34 -0
- kpress-0.1.0/LICENSE +235 -0
- kpress-0.1.0/Makefile +77 -0
- kpress-0.1.0/NOTICE.md +36 -0
- kpress-0.1.0/PKG-INFO +177 -0
- kpress-0.1.0/README.md +134 -0
- kpress-0.1.0/SECURITY.md +42 -0
- kpress-0.1.0/SUPPLY-CHAIN-SECURITY.md +86 -0
- kpress-0.1.0/TODO.md +108 -0
- kpress-0.1.0/biome.json +35 -0
- kpress-0.1.0/devtools/biome.py +23 -0
- kpress-0.1.0/devtools/css_to_oklch.py +211 -0
- kpress-0.1.0/devtools/js_dom_tests.py +18 -0
- kpress-0.1.0/devtools/lint.py +97 -0
- kpress-0.1.0/devtools/npm_tools.py +23 -0
- kpress-0.1.0/devtools/public_hygiene.py +150 -0
- kpress-0.1.0/devtools/tsc_check.py +18 -0
- kpress-0.1.0/docs/README.md +45 -0
- kpress-0.1.0/docs/development.md +109 -0
- kpress-0.1.0/docs/installation.md +30 -0
- kpress-0.1.0/docs/kpress-design.md +2082 -0
- kpress-0.1.0/docs/kpress-e2e-testing.runbook.md +236 -0
- kpress-0.1.0/docs/kpress-icons.md +11 -0
- kpress-0.1.0/docs/kpress-static-publish.runbook.md +102 -0
- kpress-0.1.0/docs/kpress-validation.runbook.md +551 -0
- kpress-0.1.0/docs/publishing.md +67 -0
- kpress-0.1.0/docs/releases/0.1.0.md +37 -0
- kpress-0.1.0/examples/.gitignore +3 -0
- kpress-0.1.0/examples/README.md +132 -0
- kpress-0.1.0/examples/_runner.py +47 -0
- kpress-0.1.0/examples/single-doc/build.py +96 -0
- kpress-0.1.0/examples/single-doc/doc.md +22 -0
- kpress-0.1.0/examples/static-site/build.py +97 -0
- kpress-0.1.0/examples/static-site/content/demo/extensions.css +22 -0
- kpress-0.1.0/examples/static-site/content/demo/extensions.js +84 -0
- kpress-0.1.0/examples/static-site/content/extensions.md +53 -0
- kpress-0.1.0/examples/static-site/content/guides/getting-started.md +42 -0
- kpress-0.1.0/examples/static-site/content/guides/markdown-features.md +50 -0
- kpress-0.1.0/examples/static-site/content/index.md +29 -0
- kpress-0.1.0/examples/static-site/content/reference/api.md +33 -0
- kpress-0.1.0/examples/static-site/kpress.yml +48 -0
- kpress-0.1.0/examples/wrapped-site/build.py +276 -0
- kpress-0.1.0/examples/wrapped-site/content/blog/announcing.md +14 -0
- kpress-0.1.0/examples/wrapped-site/content/docs/configuration.md +20 -0
- kpress-0.1.0/examples/wrapped-site/content/docs/installation.md +20 -0
- kpress-0.1.0/examples/wrapped-site/content/index.md +14 -0
- kpress-0.1.0/examples/wrapped-site/sitemap.py +27 -0
- kpress-0.1.0/examples/wrapped-site/templates/layout.html +62 -0
- kpress-0.1.0/lefthook.yml +61 -0
- kpress-0.1.0/package-lock.json +1707 -0
- kpress-0.1.0/package.json +16 -0
- kpress-0.1.0/pyproject.toml +206 -0
- kpress-0.1.0/src/kpress/__init__.py +55 -0
- kpress-0.1.0/src/kpress/_version.py +14 -0
- kpress-0.1.0/src/kpress/cli.py +371 -0
- kpress-0.1.0/src/kpress/contract.py +396 -0
- kpress-0.1.0/src/kpress/errors.py +27 -0
- kpress-0.1.0/src/kpress/format/__init__.py +56 -0
- kpress-0.1.0/src/kpress/format/assets.py +301 -0
- kpress-0.1.0/src/kpress/format/markdown.py +993 -0
- kpress-0.1.0/src/kpress/format/model.py +267 -0
- kpress-0.1.0/src/kpress/format/pdf.py +152 -0
- kpress-0.1.0/src/kpress/format/render.py +614 -0
- kpress-0.1.0/src/kpress/format/sanitize.py +509 -0
- kpress-0.1.0/src/kpress/format/static/css/components.css +1840 -0
- kpress-0.1.0/src/kpress/format/static/css/document.css +459 -0
- kpress-0.1.0/src/kpress/format/static/css/page-reset.css +12 -0
- kpress-0.1.0/src/kpress/format/static/css/print.css +351 -0
- kpress-0.1.0/src/kpress/format/static/css/style-tokens.css +454 -0
- kpress-0.1.0/src/kpress/format/static/css/syntax.css +263 -0
- kpress-0.1.0/src/kpress/format/static/css/theme-dark.css +11 -0
- kpress-0.1.0/src/kpress/format/static/css/theme-light.css +14 -0
- kpress-0.1.0/src/kpress/format/static/fonts/pt-serif-latin-400-italic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/fonts/pt-serif-latin-400-normal.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/fonts/pt-serif-latin-700-italic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/fonts/pt-serif-latin-700-normal.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/fonts/source-sans-3-latin-wght-italic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/icons/icons.svg +63 -0
- kpress-0.1.0/src/kpress/format/static/js/code-copy.js +60 -0
- kpress-0.1.0/src/kpress/format/static/js/diagrams.js +109 -0
- kpress-0.1.0/src/kpress/format/static/js/host.js +246 -0
- kpress-0.1.0/src/kpress/format/static/js/icons.js +15 -0
- kpress-0.1.0/src/kpress/format/static/js/menu.js +73 -0
- kpress-0.1.0/src/kpress/format/static/js/overlay.js +165 -0
- kpress-0.1.0/src/kpress/format/static/js/runtime.js +505 -0
- kpress-0.1.0/src/kpress/format/static/js/settings-widget.js +184 -0
- kpress-0.1.0/src/kpress/format/static/js/tables.js +45 -0
- kpress-0.1.0/src/kpress/format/static/js/tabs.js +175 -0
- kpress-0.1.0/src/kpress/format/static/js/theme-bootstrap.js +43 -0
- kpress-0.1.0/src/kpress/format/static/js/theme.js +148 -0
- kpress-0.1.0/src/kpress/format/static/js/toc.js +310 -0
- kpress-0.1.0/src/kpress/format/static/js/tooltips.js +795 -0
- kpress-0.1.0/src/kpress/format/static/js/video-popover.js +116 -0
- kpress-0.1.0/src/kpress/format/static/js/viewport.js +163 -0
- kpress-0.1.0/src/kpress/format/static/katex/VERSION +1 -0
- kpress-0.1.0/src/kpress/format/static/katex/auto-render.min.js +1 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- kpress-0.1.0/src/kpress/format/static/katex/katex-init.js +44 -0
- kpress-0.1.0/src/kpress/format/static/katex/katex.min.css +1 -0
- kpress-0.1.0/src/kpress/format/static/katex/katex.min.js +1 -0
- kpress-0.1.0/src/kpress/format/templates/page.html.jinja +33 -0
- kpress-0.1.0/src/kpress/format/templating.py +47 -0
- kpress-0.1.0/src/kpress/format/theme.py +49 -0
- kpress-0.1.0/src/kpress/format/validate.py +22 -0
- kpress-0.1.0/src/kpress/licenses/katex.txt +21 -0
- kpress-0.1.0/src/kpress/licenses/lucide.txt +59 -0
- kpress-0.1.0/src/kpress/licenses/pt-serif.txt +93 -0
- kpress-0.1.0/src/kpress/licenses/source-sans-3.txt +94 -0
- kpress-0.1.0/src/kpress/models.py +82 -0
- kpress-0.1.0/src/kpress/output.py +31 -0
- kpress-0.1.0/src/kpress/publish/__init__.py +43 -0
- kpress-0.1.0/src/kpress/publish/assets/__init__.py +20 -0
- kpress-0.1.0/src/kpress/publish/assets/copy.py +164 -0
- kpress-0.1.0/src/kpress/publish/build.py +758 -0
- kpress-0.1.0/src/kpress/publish/cache.py +77 -0
- kpress-0.1.0/src/kpress/publish/capability.py +189 -0
- kpress-0.1.0/src/kpress/publish/config.py +591 -0
- kpress-0.1.0/src/kpress/publish/discover.py +89 -0
- kpress-0.1.0/src/kpress/publish/frontmatter.py +108 -0
- kpress-0.1.0/src/kpress/publish/manifest.py +135 -0
- kpress-0.1.0/src/kpress/publish/optimize.py +466 -0
- kpress-0.1.0/src/kpress/publish/optimizer_tool/package-lock.json +650 -0
- kpress-0.1.0/src/kpress/publish/optimizer_tool/package.json +8 -0
- kpress-0.1.0/src/kpress/publish/routes.py +190 -0
- kpress-0.1.0/src/kpress/publish/site_files.py +72 -0
- kpress-0.1.0/src/kpress/py.typed +1 -0
- kpress-0.1.0/src/kpress/runtime.py +443 -0
- kpress-0.1.0/src/kpress/workflow/__init__.py +18 -0
- kpress-0.1.0/src/kpress/workflow/convert.py +66 -0
- kpress-0.1.0/src/kpress/workflow/export.py +37 -0
- kpress-0.1.0/src/kpress/workflow/format.py +49 -0
- kpress-0.1.0/src/kpress/workflow/paste.py +25 -0
- kpress-0.1.0/src/kpress/workflow/workspace.py +40 -0
- kpress-0.1.0/tests/__init__.py +1 -0
- kpress-0.1.0/tests/e2e/docs/airspeed-velocity.md +1139 -0
- kpress-0.1.0/tests/e2e/docs/assets/showcase-figure.svg +7 -0
- kpress-0.1.0/tests/e2e/docs/index.md +251 -0
- kpress-0.1.0/tests/e2e/docs/reference.md +34 -0
- kpress-0.1.0/tests/e2e/kpress.yml +16 -0
- kpress-0.1.0/tests/equivalence_helpers.py +583 -0
- kpress-0.1.0/tests/fixtures/baselines/no-pipeline-main.sha256 +1 -0
- kpress-0.1.0/tests/fixtures/documents/minimal.md +3 -0
- kpress-0.1.0/tests/fixtures/documents/rich-components.md +50 -0
- kpress-0.1.0/tests/fixtures/documents/semantic-components.md +80 -0
- kpress-0.1.0/tests/fixtures/sites/basic/docs/about.md +3 -0
- kpress-0.1.0/tests/fixtures/sites/basic/docs/assets/logo.svg +1 -0
- kpress-0.1.0/tests/fixtures/sites/basic/docs/index.md +5 -0
- kpress-0.1.0/tests/fixtures/sites/basic/kpress.yml +11 -0
- kpress-0.1.0/tests/golden/README.md +39 -0
- kpress-0.1.0/tests/golden/accepted/minimal-doc/page.html +169 -0
- kpress-0.1.0/tests/golden/accepted/readable-vs-hashed/trees.yaml +1894 -0
- kpress-0.1.0/tests/golden/accepted/rich-components/page.html +219 -0
- kpress-0.1.0/tests/golden/accepted/semantic-components/page.html +231 -0
- kpress-0.1.0/tests/golden/accepted/static-site-basic/tree.yaml +1020 -0
- kpress-0.1.0/tests/golden/scenarios/minimal-doc.yaml +4 -0
- kpress-0.1.0/tests/golden/scenarios/rich-components.yaml +5 -0
- kpress-0.1.0/tests/golden/scenarios/semantic-components.yaml +5 -0
- kpress-0.1.0/tests/golden_helpers.py +118 -0
- kpress-0.1.0/tests/js/behaviors.test.js +177 -0
- kpress-0.1.0/tests/js/kpress-dom.test.js +1002 -0
- kpress-0.1.0/tests/js/lifecycle.test.js +241 -0
- kpress-0.1.0/tests/js/menu.test.js +83 -0
- kpress-0.1.0/tests/js/overlay.test.js +303 -0
- kpress-0.1.0/tests/js/runtime.test.js +457 -0
- kpress-0.1.0/tests/js/settings-widget.test.js +222 -0
- kpress-0.1.0/tests/js/theme-engine.test.js +167 -0
- kpress-0.1.0/tests/js/tooltips-phase1.test.js +209 -0
- kpress-0.1.0/tests/js/vitest.config.mjs +8 -0
- kpress-0.1.0/tests/test_asset_contract.py +482 -0
- kpress-0.1.0/tests/test_asset_manifest.py +62 -0
- kpress-0.1.0/tests/test_capability_probe.py +256 -0
- kpress-0.1.0/tests/test_clean_room_wheel.py +147 -0
- kpress-0.1.0/tests/test_content_card.py +81 -0
- kpress-0.1.0/tests/test_doctor.py +99 -0
- kpress-0.1.0/tests/test_document_contract.py +47 -0
- kpress-0.1.0/tests/test_equivalence.py +113 -0
- kpress-0.1.0/tests/test_examples.py +236 -0
- kpress-0.1.0/tests/test_font_mode.py +75 -0
- kpress-0.1.0/tests/test_format_render.py +526 -0
- kpress-0.1.0/tests/test_golden_publish.py +41 -0
- kpress-0.1.0/tests/test_golden_readable_vs_hashed.py +84 -0
- kpress-0.1.0/tests/test_golden_render.py +21 -0
- kpress-0.1.0/tests/test_icons.py +55 -0
- kpress-0.1.0/tests/test_kpress_cli.py +352 -0
- kpress-0.1.0/tests/test_offline_mathml.py +147 -0
- kpress-0.1.0/tests/test_optimize.py +271 -0
- kpress-0.1.0/tests/test_optimize_locked_deps.py +281 -0
- kpress-0.1.0/tests/test_optimized_build_assets.py +100 -0
- kpress-0.1.0/tests/test_output.py +34 -0
- kpress-0.1.0/tests/test_pdf_contract.py +130 -0
- kpress-0.1.0/tests/test_pipeline.py +132 -0
- kpress-0.1.0/tests/test_playwright_tooltips.py +63 -0
- kpress-0.1.0/tests/test_public_contract.py +311 -0
- kpress-0.1.0/tests/test_public_hygiene.py +59 -0
- kpress-0.1.0/tests/test_publish_cache_invalidation.py +192 -0
- kpress-0.1.0/tests/test_publish_discovery.py +61 -0
- kpress-0.1.0/tests/test_publish_frontmatter_routes.py +302 -0
- kpress-0.1.0/tests/test_publish_routes.py +265 -0
- kpress-0.1.0/tests/test_publish_workflow.py +1274 -0
- kpress-0.1.0/tests/test_reader_markdown_parity.py +791 -0
- kpress-0.1.0/tests/test_release_workflow.py +22 -0
- kpress-0.1.0/tests/test_runtime.py +383 -0
- kpress-0.1.0/tests/test_sanitize.py +171 -0
- kpress-0.1.0/tests/test_workflow_units.py +159 -0
- kpress-0.1.0/tsconfig.json +14 -0
- kpress-0.1.0/uv.lock +573 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flowmark
|
|
3
|
+
description: Fast, consistent Markdown auto-formatter for typographic cleanup (smart quotes, ellipses), normalized formatting, and optional clean line wrapping for small, readable git diffs. Use when creating, editing, or normalizing Markdown (.md) files, cleaning up LLM-generated Markdown, or when the user mentions flowmark or formatting Markdown.
|
|
4
|
+
allowed-tools: Bash(flowmark:*), Bash(uvx:*), Read, Write
|
|
5
|
+
---
|
|
6
|
+
<!-- DO NOT EDIT: `flowmark --install-skill` (format=f02 surface=skill-md) -->
|
|
7
|
+
|
|
8
|
+
# Flowmark - Markdown Auto-Formatter
|
|
9
|
+
|
|
10
|
+
Fast, consistent Markdown auto-formatter.
|
|
11
|
+
Run it on Markdown you generate or edit so committed diffs stay small and readable.
|
|
12
|
+
It is conservative and safe to run on every file: it never modifies code blocks or
|
|
13
|
+
inline code.
|
|
14
|
+
|
|
15
|
+
## Default Usage
|
|
16
|
+
|
|
17
|
+
Format in place with all auto-formatting (typography, cleanups, semantic line breaks):
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
flowmark --auto FILE # one file
|
|
21
|
+
flowmark --auto . # whole tree (respects .gitignore and .flowmarkignore)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Omit `--auto` to preview to stdout; pipe stdin with `-` (e.g. `cat FILE | flowmark -`).
|
|
25
|
+
|
|
26
|
+
Flowmark ships as two packages with identical formatting and the same `flowmark`
|
|
27
|
+
command: the fast native Rust port [`flowmark-rs`](https://github.com/jlevy/flowmark-rs)
|
|
28
|
+
(recommended) and the Python reference [`flowmark`](https://github.com/jlevy/flowmark).
|
|
29
|
+
Prefer flowmark-rs; reach for the Python build only when you need its library API or the
|
|
30
|
+
very latest patch release not yet ported to Rust.
|
|
31
|
+
If `flowmark` is not on `PATH`, run it with a version-pinned runner (never `@latest`):
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Recommended: fast native Rust port
|
|
35
|
+
uvx --from flowmark-rs==0.3.1 flowmark --auto FILE
|
|
36
|
+
# Python reference (library API or newest patch releases)
|
|
37
|
+
uvx --from flowmark==0.7.2 flowmark --auto FILE
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## When to Use It
|
|
41
|
+
|
|
42
|
+
- Auto-format Markdown you create or edit, before committing.
|
|
43
|
+
- Normalize and clean up LLM-generated Markdown.
|
|
44
|
+
- Typographic cleanup (smart quotes, ellipses) and consistent formatting.
|
|
45
|
+
- Optional semantic (sentence-based) line breaks for cleaner git diffs (`--semantic`).
|
|
46
|
+
|
|
47
|
+
## Full Documentation
|
|
48
|
+
|
|
49
|
+
Flowmark documents itself.
|
|
50
|
+
Use the CLI rather than reproducing details here:
|
|
51
|
+
|
|
52
|
+
- `flowmark --help` — every flag: `--semantic`, `--smartquotes`, `--ellipses`,
|
|
53
|
+
`--width`, `--check`, list spacing, and file discovery
|
|
54
|
+
(`--extend-include`/`--extend-exclude`).
|
|
55
|
+
- `flowmark --docs` — the full guide: editor on-save setup (VS Code/Cursor), project
|
|
56
|
+
wiring (pre-commit/CI, `.flowmarkignore`), config files, the Python library API, and
|
|
57
|
+
installing this skill for other agents (`flowmark --install-skill`).
|
|
58
|
+
|
|
59
|
+
<!-- This document follows common-doc-guidelines.md.
|
|
60
|
+
See github.com/jlevy/practical-prose and review guidelines before editing.
|
|
61
|
+
-->
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pprose-common-edit
|
|
3
|
+
description: Apply the common Markdown documentation guidelines to any document; modifies the doc. The basic, universal edit tier. Use when asked to tidy, clean up, conform, fix formatting/structure, or add the footer.
|
|
4
|
+
---
|
|
5
|
+
<!-- DO NOT EDIT: generated by `pprose install` (format=f01) -->
|
|
6
|
+
|
|
7
|
+
> Run pprose as `pprose <command>` if on PATH, else `uvx pprose@0.1.0 <command>`
|
|
8
|
+
> (zero-install via uv).
|
|
9
|
+
> Run `pprose --help` for every command, `pprose skill --list` for the other Practical
|
|
10
|
+
> Prose skills, and `pprose shortcut --list` / `pprose guidelines --list` /
|
|
11
|
+
> `pprose runbook --list` for on-demand playbooks, style guides, and procedures.
|
|
12
|
+
|
|
13
|
+
# Common Edit
|
|
14
|
+
|
|
15
|
+
This is the basic, universal edit tier (an apply skill: it may modify the target
|
|
16
|
+
document). It applies only the common documentation guidelines (read them with
|
|
17
|
+
`pprose guidelines common-doc-guidelines`) — organization, structure, writing style,
|
|
18
|
+
Markdown formatting, links, headings, lists, frontmatter, and footer — so it is safe for
|
|
19
|
+
almost any Markdown document, workflow, or repo, whether or not it is a Practical Prose
|
|
20
|
+
artifact.
|
|
21
|
+
|
|
22
|
+
For a deeper language-and-formatting pass (the Expression and Form dimensions) use
|
|
23
|
+
`pprose-copy-edit`; for a full all-dimension editorial pass use `pprose-full-edit`. Each
|
|
24
|
+
tier is a superset of the one before.
|
|
25
|
+
|
|
26
|
+
## Inputs
|
|
27
|
+
|
|
28
|
+
- Path to one Markdown document.
|
|
29
|
+
- Optional scope note from the user, such as “format only” or “make all obvious fixes.”
|
|
30
|
+
|
|
31
|
+
## Steps
|
|
32
|
+
|
|
33
|
+
1. Run `pprose guidelines common-doc-guidelines` and read it.
|
|
34
|
+
2. Inspect the target against organization, structure, writing style, Markdown
|
|
35
|
+
formatting, links, headings, lists, frontmatter, and footer rules.
|
|
36
|
+
3. Apply fixes directly to the document while preserving its intended content and voice.
|
|
37
|
+
4. Ensure the required guideline footer is present when the document is part of this
|
|
38
|
+
repo’s durable documentation.
|
|
39
|
+
5. Re-read the diff and check that no edit changed factual meaning.
|
|
40
|
+
|
|
41
|
+
## Output
|
|
42
|
+
|
|
43
|
+
Report the changed file, the main issue classes fixed, and any rule you intentionally
|
|
44
|
+
left alone.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pprose-compare
|
|
3
|
+
description: Compare evaluated document versions or variants; read-only on source docs. Use when asked to compare drafts, A/B versions, quality-diff docs, or pick the best.
|
|
4
|
+
---
|
|
5
|
+
<!-- DO NOT EDIT: generated by `pprose install` (format=f01) -->
|
|
6
|
+
|
|
7
|
+
> Run pprose as `pprose <command>` if on PATH, else `uvx pprose@0.1.0 <command>`
|
|
8
|
+
> (zero-install via uv).
|
|
9
|
+
> Run `pprose --help` for every command, `pprose skill --list` for the other Practical
|
|
10
|
+
> Prose skills, and `pprose shortcut --list` / `pprose guidelines --list` /
|
|
11
|
+
> `pprose runbook --list` for on-demand playbooks, style guides, and procedures.
|
|
12
|
+
|
|
13
|
+
# Compare Practical Prose Evaluations
|
|
14
|
+
|
|
15
|
+
This is read-only on source documents.
|
|
16
|
+
It writes or prints comparison reports.
|
|
17
|
+
|
|
18
|
+
Use it after each input document already has a validated Practical Prose eval report.
|
|
19
|
+
|
|
20
|
+
## Inputs
|
|
21
|
+
|
|
22
|
+
- Paths to two or more validated `*.eval.md` reports.
|
|
23
|
+
- Optional labels or pair specs for deltas, such as `old=new`.
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
1. Run `pprose runbook practical-prose-eval-compare` for the full procedure.
|
|
28
|
+
|
|
29
|
+
2. Validate each input:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pprose report validate path/to/artifact.eval.md --complete
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
3. Generate the comparison:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pprose compare a.eval.md b.eval.md --format unified --pairs 'a=b' > comparison.md
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Add `--table-styles` only when generating a report for a browser that supports the
|
|
42
|
+
optional table-style microformat.
|
|
43
|
+
|
|
44
|
+
4. Add human analytical prose only when the user asks for a full report, and ground it
|
|
45
|
+
in specific table cells.
|
|
46
|
+
|
|
47
|
+
## Output
|
|
48
|
+
|
|
49
|
+
Return the comparison path or table, validation status for each input, and any alignment
|
|
50
|
+
or rubric-version warnings.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pprose-copy-edit
|
|
3
|
+
description: Copy-edit a Markdown document for language and formatting (the Expression and Form dimensions); modifies the doc. A superset of pprose-common-edit. Use when asked to copy edit, proofread, polish, tighten, rewrite, or line edit.
|
|
4
|
+
---
|
|
5
|
+
<!-- DO NOT EDIT: generated by `pprose install` (format=f01) -->
|
|
6
|
+
|
|
7
|
+
> Run pprose as `pprose <command>` if on PATH, else `uvx pprose@0.1.0 <command>`
|
|
8
|
+
> (zero-install via uv).
|
|
9
|
+
> Run `pprose --help` for every command, `pprose skill --list` for the other Practical
|
|
10
|
+
> Prose skills, and `pprose shortcut --list` / `pprose guidelines --list` /
|
|
11
|
+
> `pprose runbook --list` for on-demand playbooks, style guides, and procedures.
|
|
12
|
+
|
|
13
|
+
# Copy Edit
|
|
14
|
+
|
|
15
|
+
This is an apply skill: it may modify the target document.
|
|
16
|
+
It is a **superset of `pprose-common-edit`**: it applies the common documentation
|
|
17
|
+
substrate *and* the Expression and Form dimensions (E1–E3 and F1–F3: clarity, coherence,
|
|
18
|
+
concision, organization, consistency, formatting) of the Practical Prose guidelines.
|
|
19
|
+
It stops short of the substantive dimensions — for a full all-dimension editorial pass
|
|
20
|
+
that also writes an editorial review, use `pprose-full-edit`.
|
|
21
|
+
|
|
22
|
+
## Inputs
|
|
23
|
+
|
|
24
|
+
- Path to one Markdown document.
|
|
25
|
+
- Optional edit brief, audience, and tolerance for heavier rewrites.
|
|
26
|
+
|
|
27
|
+
## Steps
|
|
28
|
+
|
|
29
|
+
1. Run `pprose shortcut shortcut-copy-edit` and follow it.
|
|
30
|
+
2. Apply the common substrate: `pprose guidelines common-doc-guidelines`.
|
|
31
|
+
3. Apply the Expression and Form dimensions (E1–E3, F1–F3) from
|
|
32
|
+
`pprose guidelines practical-prose-guidelines` (§Expression Dimensions, §Form
|
|
33
|
+
Dimensions).
|
|
34
|
+
4. Audit the document, track issues (project issue/bead tooling when available, else the
|
|
35
|
+
agent’s to-do/checklist), and apply edits directly.
|
|
36
|
+
5. Preserve factual meaning, claim strength, citations, and intentional voice.
|
|
37
|
+
Do not edit the substantive dimensions (Purpose, Reasoning, Grounding, Judgment); if
|
|
38
|
+
those need work, note it and recommend `pprose-full-edit`.
|
|
39
|
+
6. Re-scan the diff for regressions before reporting.
|
|
40
|
+
|
|
41
|
+
## Output
|
|
42
|
+
|
|
43
|
+
Report the changed file, the Expression issue classes fixed, and any substantive
|
|
44
|
+
(Purpose / Reasoning / Grounding / Judgment) issues you noticed but did not edit.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pprose-eval
|
|
3
|
+
description: Score one practical document with metrics and rubric grading; read-only on source. Use when asked to score, evaluate, grade, rubric-check, or measure quality.
|
|
4
|
+
---
|
|
5
|
+
<!-- DO NOT EDIT: generated by `pprose install` (format=f01) -->
|
|
6
|
+
|
|
7
|
+
> Run pprose as `pprose <command>` if on PATH, else `uvx pprose@0.1.0 <command>`
|
|
8
|
+
> (zero-install via uv).
|
|
9
|
+
> Run `pprose --help` for every command, `pprose skill --list` for the other Practical
|
|
10
|
+
> Prose skills, and `pprose shortcut --list` / `pprose guidelines --list` /
|
|
11
|
+
> `pprose runbook --list` for on-demand playbooks, style guides, and procedures.
|
|
12
|
+
|
|
13
|
+
# Evaluate One Practical Prose Document
|
|
14
|
+
|
|
15
|
+
This is read-only on the source document.
|
|
16
|
+
It writes eval report files.
|
|
17
|
+
|
|
18
|
+
Use it when the user wants a formal Practical Prose evaluation of one document.
|
|
19
|
+
|
|
20
|
+
For the repo’s baseline batch evals, run `pprose runbook practical-prose-baseline-evals`
|
|
21
|
+
and default to running all third-party and self-eval artifacts unless the user asks for
|
|
22
|
+
a subset.
|
|
23
|
+
|
|
24
|
+
## Inputs
|
|
25
|
+
|
|
26
|
+
- Path to one Markdown artifact.
|
|
27
|
+
- Artifact label.
|
|
28
|
+
- Scope class: `status`, `memo`, `brief`, `deep_research`, or `design_doc`.
|
|
29
|
+
- `ANTHROPIC_API_KEY` for model scoring, unless the user asks for dry-run or manual
|
|
30
|
+
scoring only.
|
|
31
|
+
|
|
32
|
+
## Steps
|
|
33
|
+
|
|
34
|
+
1. Run `pprose runbook practical-prose-eval-single` for the full procedure.
|
|
35
|
+
|
|
36
|
+
2. Generate the eval stub:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pprose report from-metrics path/to/artifact.md --label NAME --scope-class brief --out artifact.eval.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. Inspect deterministic metrics:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pprose metrics path/to/artifact.md --format yaml
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4. Score the qualitative dimensions (`--model` is required; run
|
|
49
|
+
`pprose score --list-models` for choices, or pass `--dry-run` to skip the API call):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pprose score artifact.eval.md --model opus
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
5. Validate the result:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pprose report validate artifact.eval.md --complete
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Output
|
|
62
|
+
|
|
63
|
+
Return the eval report path, validation result, and any scoring or alignment issues that
|
|
64
|
+
need human review.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pprose-full-edit
|
|
3
|
+
description: Full editorial pass over a practical document across all 20 Practical Prose dimensions; modifies the doc AND writes an editorial-review side document. A superset of pprose-copy-edit. Use when asked for a deep or full edit, an editorial review, a substantive edit, or a strengths-and-weaknesses review with suggested fixes.
|
|
4
|
+
---
|
|
5
|
+
<!-- DO NOT EDIT: generated by `pprose install` (format=f01) -->
|
|
6
|
+
|
|
7
|
+
> Run pprose as `pprose <command>` if on PATH, else `uvx pprose@0.1.0 <command>`
|
|
8
|
+
> (zero-install via uv).
|
|
9
|
+
> Run `pprose --help` for every command, `pprose skill --list` for the other Practical
|
|
10
|
+
> Prose skills, and `pprose shortcut --list` / `pprose guidelines --list` /
|
|
11
|
+
> `pprose runbook --list` for on-demand playbooks, style guides, and procedures.
|
|
12
|
+
|
|
13
|
+
# Full Edit
|
|
14
|
+
|
|
15
|
+
This is the deepest edit tier (an apply skill: it may modify the target document) and a
|
|
16
|
+
**superset of `pprose-copy-edit`**. It works the document across all six groups and 20
|
|
17
|
+
dimensions of the Practical Prose guidelines (Purpose, Expression, Form, Reasoning,
|
|
18
|
+
Grounding, Judgment), and it writes an **editorial-review side document** with
|
|
19
|
+
strengths, weaknesses, and suggested fixes for the author or other editors.
|
|
20
|
+
|
|
21
|
+
Apply-vs-flag: auto-apply the safe Expression and formatting fixes; **flag** substantive
|
|
22
|
+
Purpose / Reasoning / Grounding / Judgment issues in the review rather than silently
|
|
23
|
+
rewriting — never change factual meaning, claim strength, scope, or citations.
|
|
24
|
+
|
|
25
|
+
## Inputs
|
|
26
|
+
|
|
27
|
+
- Path to one practical-prose document.
|
|
28
|
+
- Optional: edit brief, audience, risk level, and an output path for the review.
|
|
29
|
+
- Optional “audit only” instruction: produce the review and findings, make no edits.
|
|
30
|
+
|
|
31
|
+
## Steps
|
|
32
|
+
|
|
33
|
+
1. Run `pprose shortcut shortcut-full-edit` — the playbook, including the
|
|
34
|
+
editorial-review structure.
|
|
35
|
+
2. Follow it: per-group passes against `pprose guidelines practical-prose-guidelines`,
|
|
36
|
+
apply the safe fixes, flag the substantive ones, and write the editorial review.
|
|
37
|
+
|
|
38
|
+
## Output
|
|
39
|
+
|
|
40
|
+
- The edited document (unless run audit-only).
|
|
41
|
+
- The editorial-review side document (default `<source-basename>.review.md` beside the
|
|
42
|
+
source): scope, strengths, weaknesses by dimension, suggested fixes for
|
|
43
|
+
authors/editors, and a summary of the edits applied.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pprose-review
|
|
3
|
+
description: Review one practical document and report tiered editorial feedback — what a common edit, a copy edit, and a full substantive pass would each change — without modifying the document and without numeric scores. Read-only. Use when asked to review, critique, give feedback, or get an edit plan, and you do not want edits applied, a scored eval, or a version comparison.
|
|
4
|
+
---
|
|
5
|
+
<!-- DO NOT EDIT: generated by `pprose install` (format=f01) -->
|
|
6
|
+
|
|
7
|
+
> Run pprose as `pprose <command>` if on PATH, else `uvx pprose@0.1.0 <command>`
|
|
8
|
+
> (zero-install via uv).
|
|
9
|
+
> Run `pprose --help` for every command, `pprose skill --list` for the other Practical
|
|
10
|
+
> Prose skills, and `pprose shortcut --list` / `pprose guidelines --list` /
|
|
11
|
+
> `pprose runbook --list` for on-demand playbooks, style guides, and procedures.
|
|
12
|
+
|
|
13
|
+
# Review
|
|
14
|
+
|
|
15
|
+
This is a **read-only** skill: it never modifies the target document and assigns no
|
|
16
|
+
scores. It produces a single **tiered editorial review** side document that sorts every
|
|
17
|
+
finding into three layers of edit depth:
|
|
18
|
+
|
|
19
|
+
- **Tier 1 — Common edit:** formatting and structure fixes a `pprose-common-edit` pass
|
|
20
|
+
would apply (the common documentation substrate).
|
|
21
|
+
- **Tier 2 — Copy edit:** Expression and Form fixes (E1-E3, F1-F3) a `pprose-copy-edit`
|
|
22
|
+
pass would apply — language and formatting, no change of meaning.
|
|
23
|
+
- **Tier 3 — Full feedback:** the substantive Purpose, Reasoning, Grounding, and
|
|
24
|
+
Judgment issues that need author judgment — flagged, never silently rewritten.
|
|
25
|
+
|
|
26
|
+
Use it when the user wants feedback or an edit plan **without** touching the document.
|
|
27
|
+
For other intents, route elsewhere: to actually apply the edits use `pprose-copy-edit`
|
|
28
|
+
(Tiers 1-2) or `pprose-full-edit` (all tiers); for a scored 1-5 rubric use
|
|
29
|
+
`pprose-eval`; to compare document versions use `pprose-compare`.
|
|
30
|
+
|
|
31
|
+
## Inputs
|
|
32
|
+
|
|
33
|
+
- Path to one Markdown document.
|
|
34
|
+
- Optional: audience, risk level, and a review brief.
|
|
35
|
+
- Optional output path for the review (default `<source-basename>.review.md`).
|
|
36
|
+
|
|
37
|
+
## Steps
|
|
38
|
+
|
|
39
|
+
1. Run `pprose shortcut shortcut-review` and follow it: run the audit passes, change
|
|
40
|
+
nothing, and sort each finding into Tier 1, Tier 2, or Tier 3.
|
|
41
|
+
2. Write the tiered review to the output path; make no edits to the source and assign no
|
|
42
|
+
scores.
|
|
43
|
+
|
|
44
|
+
## Output
|
|
45
|
+
|
|
46
|
+
Return the review path, the count of findings per tier, and the recommended next action
|
|
47
|
+
(run `pprose-copy-edit` to apply Tiers 1-2 automatically; Tier 3 is for author
|
|
48
|
+
judgment).
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: repren
|
|
3
|
+
description: The preferred tool for large-scale or multi-file renames and search-and-replace. Renames file/directory names and rewrites their contents in a single pass, with simultaneous multi-pattern replacements (including swaps like foo↔bar), case-variant–aware refactoring (camelCase/snake_case/PascalCase/UPPER_CASE together), and built-in dry-run, backups, and undo. Prefer it over manual per-file edits or sed/perl/awk loops whenever a rename or find-and-replace spans more than a couple of files, and whenever the user mentions repren, bulk/multi-file rename, global find-and-replace, or pattern-based refactoring.
|
|
4
|
+
allowed-tools: Bash(repren:*), Bash(uvx repren@latest:*), Read, Write
|
|
5
|
+
---
|
|
6
|
+
# repren: multi-pattern rename and search-and-replace
|
|
7
|
+
|
|
8
|
+
repren does in one safe, previewable pass what hand edits and `sed`/`perl`/`awk` loops do
|
|
9
|
+
awkwardly: combined content and file/directory renames, simultaneous multi-pattern
|
|
10
|
+
replacement (including swaps), case-variant-aware refactoring, and atomic writes with
|
|
11
|
+
backups and undo.
|
|
12
|
+
|
|
13
|
+
> **If you are going to use repren, read its docs first:** run `repren --docs` for the
|
|
14
|
+
> full flags, pattern-file format, examples, and edge cases. This skill only tells you
|
|
15
|
+
> *when* to reach for repren and *which* command; `repren --docs` and `repren --help`
|
|
16
|
+
> carry the *how*.
|
|
17
|
+
>
|
|
18
|
+
> **Invocation:** use `repren` if it is on `PATH`, otherwise `uvx repren@latest` (no
|
|
19
|
+
> install needed, zero runtime dependencies). Always preview with `--dry-run` first.
|
|
20
|
+
|
|
21
|
+
## When to use repren
|
|
22
|
+
|
|
23
|
+
Prefer repren over the Edit tool or shell loops whenever a rename or replacement spans
|
|
24
|
+
more than a file or two. Reach for it when the task is to:
|
|
25
|
+
|
|
26
|
+
- **Rename a symbol across many files** — `repren --from=Old --to=New --word-breaks --full DIR`
|
|
27
|
+
- **Rename a symbol and the files/directories named after it, together** — `--full` rewrites contents and renames paths in one pass
|
|
28
|
+
- **Apply many replacements at once, or swap names (`foo`↔`bar`)** — `repren --patterns=FILE --full DIR`
|
|
29
|
+
- **Refactor an identifier across all case variants** (camelCase/snake_case/PascalCase/UPPER_CASE) — add `--preserve-case`
|
|
30
|
+
- **Replace with a regex and capture groups across files** — `repren --from='figure ([0-9]+)' --to='Figure \1' DIR`
|
|
31
|
+
- **Make a bulk change you must preview, back up, and be able to reverse** — `--dry-run`, then run, then `--undo` or `--clean-backups`
|
|
32
|
+
|
|
33
|
+
For the exact flags, pattern-file syntax, scoping (`--include`/`--exclude`, `--literal`,
|
|
34
|
+
`--at-once`), and JSON output, read `repren --docs`.
|
|
35
|
+
|
|
36
|
+
## When not to use repren
|
|
37
|
+
|
|
38
|
+
- A single-file or one-off edit — use the Edit tool.
|
|
39
|
+
- Language-aware or semantic refactors — use an AST tool such as ast-grep.
|
|
40
|
+
- Anything needing precise line-by-line control — use the Edit tool.
|
|
41
|
+
|
|
42
|
+
## Good to know
|
|
43
|
+
|
|
44
|
+
- Always `--dry-run` first. repren writes atomically and leaves `.orig` backups; `--undo`
|
|
45
|
+
restores them, `--clean-backups` removes them.
|
|
46
|
+
- repren does **not** read `.gitignore`. It skips dotfiles (including `.git/`) by default;
|
|
47
|
+
scope everything else explicitly with `--include`/`--exclude`. See `repren --docs`.
|