docsweep 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.
Files changed (202) hide show
  1. docsweep-0.1.0/.docsweep.yaml +5 -0
  2. docsweep-0.1.0/.github/workflows/publish.yml +85 -0
  3. docsweep-0.1.0/.gitignore +83 -0
  4. docsweep-0.1.0/AGENTS.md +20 -0
  5. docsweep-0.1.0/CHANGELOG.md +194 -0
  6. docsweep-0.1.0/CLAUDE.md +90 -0
  7. docsweep-0.1.0/LICENSE +21 -0
  8. docsweep-0.1.0/NOTICES.md +47 -0
  9. docsweep-0.1.0/PKG-INFO +484 -0
  10. docsweep-0.1.0/README.md +432 -0
  11. docsweep-0.1.0/archive/plan_drop-last-updated-followup.md +64 -0
  12. docsweep-0.1.0/archive/plan_name-docsweep-availability.md +80 -0
  13. docsweep-0.1.0/archive/plan_templates-drop-last-updated-line.md +56 -0
  14. docsweep-0.1.0/assets/icon-a-broom.svg +30 -0
  15. docsweep-0.1.0/assets/icon-b-doc-check.svg +23 -0
  16. docsweep-0.1.0/assets/icon-c-sweep-sparkle.svg +25 -0
  17. docsweep-0.1.0/assets/icon.svg +30 -0
  18. docsweep-0.1.0/assets/icons/apple-touch-icon.png +0 -0
  19. docsweep-0.1.0/assets/icons/favicon-16.png +0 -0
  20. docsweep-0.1.0/assets/icons/favicon-32.png +0 -0
  21. docsweep-0.1.0/assets/icons/favicon-48.png +0 -0
  22. docsweep-0.1.0/assets/icons/favicon.ico +0 -0
  23. docsweep-0.1.0/assets/icons/favicon.svg +30 -0
  24. docsweep-0.1.0/assets/icons/icon-192.png +0 -0
  25. docsweep-0.1.0/assets/icons/icon-512.png +0 -0
  26. docsweep-0.1.0/assets/proposals/a-broom/apple-touch-icon.png +0 -0
  27. docsweep-0.1.0/assets/proposals/a-broom/favicon-16.png +0 -0
  28. docsweep-0.1.0/assets/proposals/a-broom/favicon-32.png +0 -0
  29. docsweep-0.1.0/assets/proposals/a-broom/favicon-48.png +0 -0
  30. docsweep-0.1.0/assets/proposals/a-broom/favicon.ico +0 -0
  31. docsweep-0.1.0/assets/proposals/a-broom/favicon.svg +30 -0
  32. docsweep-0.1.0/assets/proposals/a-broom/icon-192.png +0 -0
  33. docsweep-0.1.0/assets/proposals/a-broom/icon-512.png +0 -0
  34. docsweep-0.1.0/assets/proposals/b-doc-check/apple-touch-icon.png +0 -0
  35. docsweep-0.1.0/assets/proposals/b-doc-check/favicon-16.png +0 -0
  36. docsweep-0.1.0/assets/proposals/b-doc-check/favicon-32.png +0 -0
  37. docsweep-0.1.0/assets/proposals/b-doc-check/favicon-48.png +0 -0
  38. docsweep-0.1.0/assets/proposals/b-doc-check/favicon.ico +0 -0
  39. docsweep-0.1.0/assets/proposals/b-doc-check/favicon.svg +23 -0
  40. docsweep-0.1.0/assets/proposals/b-doc-check/icon-192.png +0 -0
  41. docsweep-0.1.0/assets/proposals/b-doc-check/icon-512.png +0 -0
  42. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/apple-touch-icon.png +0 -0
  43. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/favicon-16.png +0 -0
  44. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/favicon-32.png +0 -0
  45. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/favicon-48.png +0 -0
  46. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/favicon.ico +0 -0
  47. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/favicon.svg +25 -0
  48. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/icon-192.png +0 -0
  49. docsweep-0.1.0/assets/proposals/c-sweep-sparkle/icon-512.png +0 -0
  50. docsweep-0.1.0/docs/D-skill-update-proposal.md +59 -0
  51. docsweep-0.1.0/docs/ai-agent-integration.md +101 -0
  52. docsweep-0.1.0/docs/conventions.md +197 -0
  53. docsweep-0.1.0/docs/guidance-rewrite-proposal.md +45 -0
  54. docsweep-0.1.0/docs/mockups/dashboard_v0.1.0.html +231 -0
  55. docsweep-0.1.0/docs/mockups/dashboard_v0.1.0.png +0 -0
  56. docsweep-0.1.0/docs/mockups/mcp_usage_v0.1.0.html +348 -0
  57. docsweep-0.1.0/docs/okf-export-format.md +108 -0
  58. docsweep-0.1.0/docs/okf-mapping.md +92 -0
  59. docsweep-0.1.0/docs/zenn/docsweep/2026-06-22_slash-commands-p-s-d/20260622-claude-code-slash-commands.md +175 -0
  60. docsweep-0.1.0/docsweep/__init__.py +3 -0
  61. docsweep-0.1.0/docsweep/__main__.py +4 -0
  62. docsweep-0.1.0/docsweep/activity.py +183 -0
  63. docsweep-0.1.0/docsweep/aggregate_index.py +148 -0
  64. docsweep-0.1.0/docsweep/archive.py +80 -0
  65. docsweep-0.1.0/docsweep/atomic.py +181 -0
  66. docsweep-0.1.0/docsweep/auto_triage.py +172 -0
  67. docsweep-0.1.0/docsweep/brief/__init__.py +9 -0
  68. docsweep-0.1.0/docsweep/brief/score.py +132 -0
  69. docsweep-0.1.0/docsweep/brief/service.py +243 -0
  70. docsweep-0.1.0/docsweep/capture/__init__.py +15 -0
  71. docsweep-0.1.0/docsweep/capture/heuristics.py +69 -0
  72. docsweep-0.1.0/docsweep/capture/llm.py +152 -0
  73. docsweep-0.1.0/docsweep/capture/models.py +29 -0
  74. docsweep-0.1.0/docsweep/capture/service.py +79 -0
  75. docsweep-0.1.0/docsweep/claim.py +112 -0
  76. docsweep-0.1.0/docsweep/cli.py +1771 -0
  77. docsweep-0.1.0/docsweep/completion.py +157 -0
  78. docsweep-0.1.0/docsweep/config.py +418 -0
  79. docsweep-0.1.0/docsweep/context.py +160 -0
  80. docsweep-0.1.0/docsweep/cross/__init__.py +11 -0
  81. docsweep-0.1.0/docsweep/cross/service.py +207 -0
  82. docsweep-0.1.0/docsweep/detect.py +328 -0
  83. docsweep-0.1.0/docsweep/engine.py +312 -0
  84. docsweep-0.1.0/docsweep/export.py +287 -0
  85. docsweep-0.1.0/docsweep/find.py +133 -0
  86. docsweep-0.1.0/docsweep/graph/__init__.py +8 -0
  87. docsweep-0.1.0/docsweep/graph/service.py +106 -0
  88. docsweep-0.1.0/docsweep/index.py +521 -0
  89. docsweep-0.1.0/docsweep/inject.py +654 -0
  90. docsweep-0.1.0/docsweep/interactive.py +344 -0
  91. docsweep-0.1.0/docsweep/linkcheck.py +231 -0
  92. docsweep-0.1.0/docsweep/mcp_server.py +471 -0
  93. docsweep-0.1.0/docsweep/migrate.py +167 -0
  94. docsweep-0.1.0/docsweep/models.py +94 -0
  95. docsweep-0.1.0/docsweep/presets.py +56 -0
  96. docsweep-0.1.0/docsweep/related.py +175 -0
  97. docsweep-0.1.0/docsweep/reports.py +315 -0
  98. docsweep-0.1.0/docsweep/resurrect/__init__.py +12 -0
  99. docsweep-0.1.0/docsweep/resurrect/embedding.py +43 -0
  100. docsweep-0.1.0/docsweep/resurrect/service.py +184 -0
  101. docsweep-0.1.0/docsweep/resurrect/similarity.py +38 -0
  102. docsweep-0.1.0/docsweep/review.py +69 -0
  103. docsweep-0.1.0/docsweep/scan.py +431 -0
  104. docsweep-0.1.0/docsweep/security/__init__.py +13 -0
  105. docsweep-0.1.0/docsweep/security/path.py +65 -0
  106. docsweep-0.1.0/docsweep/server/__init__.py +5 -0
  107. docsweep-0.1.0/docsweep/server/app.py +319 -0
  108. docsweep-0.1.0/docsweep/server/routes/__init__.py +11 -0
  109. docsweep-0.1.0/docsweep/server/routes/board.py +456 -0
  110. docsweep-0.1.0/docsweep/server/routes/brief.py +66 -0
  111. docsweep-0.1.0/docsweep/server/routes/capture.py +108 -0
  112. docsweep-0.1.0/docsweep/server/routes/cards.py +436 -0
  113. docsweep-0.1.0/docsweep/server/routes/cross.py +62 -0
  114. docsweep-0.1.0/docsweep/server/routes/graph.py +54 -0
  115. docsweep-0.1.0/docsweep/server/routes/resurrect.py +64 -0
  116. docsweep-0.1.0/docsweep/server/sanitize.py +144 -0
  117. docsweep-0.1.0/docsweep/server/security.py +47 -0
  118. docsweep-0.1.0/docsweep/server/static/board.css +640 -0
  119. docsweep-0.1.0/docsweep/server/static/dnd.js +116 -0
  120. docsweep-0.1.0/docsweep/server/static/edit.js +258 -0
  121. docsweep-0.1.0/docsweep/server/static/htmx.min.js +1 -0
  122. docsweep-0.1.0/docsweep/server/static/icons/apple-touch-icon.png +0 -0
  123. docsweep-0.1.0/docsweep/server/static/icons/favicon.ico +0 -0
  124. docsweep-0.1.0/docsweep/server/static/icons/favicon.svg +30 -0
  125. docsweep-0.1.0/docsweep/server/static/icons/icon-192.png +0 -0
  126. docsweep-0.1.0/docsweep/server/static/icons/icon-512.png +0 -0
  127. docsweep-0.1.0/docsweep/server/static/keymap.js +1123 -0
  128. docsweep-0.1.0/docsweep/server/templates/_board_body.html +102 -0
  129. docsweep-0.1.0/docsweep/server/templates/_card.html +68 -0
  130. docsweep-0.1.0/docsweep/server/templates/_change_picker.html +27 -0
  131. docsweep-0.1.0/docsweep/server/templates/_due_picker.html +13 -0
  132. docsweep-0.1.0/docsweep/server/templates/_edit_pane.html +73 -0
  133. docsweep-0.1.0/docsweep/server/templates/_label_picker.html +14 -0
  134. docsweep-0.1.0/docsweep/server/templates/_preview.html +15 -0
  135. docsweep-0.1.0/docsweep/server/templates/_settings.html +68 -0
  136. docsweep-0.1.0/docsweep/server/templates/board.html +111 -0
  137. docsweep-0.1.0/docsweep/server/templates/brief.html +89 -0
  138. docsweep-0.1.0/docsweep/server/templates/capture.html +121 -0
  139. docsweep-0.1.0/docsweep/server/templates/cross.html +74 -0
  140. docsweep-0.1.0/docsweep/server/templates/graph.html +99 -0
  141. docsweep-0.1.0/docsweep/server/templates/resurrect.html +58 -0
  142. docsweep-0.1.0/docsweep/services/__init__.py +11 -0
  143. docsweep-0.1.0/docsweep/services/archive.py +240 -0
  144. docsweep-0.1.0/docsweep/services/content.py +68 -0
  145. docsweep-0.1.0/docsweep/services/due.py +189 -0
  146. docsweep-0.1.0/docsweep/services/frontmatter.py +241 -0
  147. docsweep-0.1.0/docsweep/services/status.py +157 -0
  148. docsweep-0.1.0/docsweep/stale.py +117 -0
  149. docsweep-0.1.0/docsweep/state.py +198 -0
  150. docsweep-0.1.0/docsweep/states.py +165 -0
  151. docsweep-0.1.0/docsweep/templates_gen.py +178 -0
  152. docsweep-0.1.0/docsweep/timeline.py +177 -0
  153. docsweep-0.1.0/docsweep-ui.cmd +34 -0
  154. docsweep-0.1.0/docsweep-ui.command +38 -0
  155. docsweep-0.1.0/docsweep-ui.sh +39 -0
  156. docsweep-0.1.0/pyproject.toml +82 -0
  157. docsweep-0.1.0/templates/.docsweep.yaml +94 -0
  158. docsweep-0.1.0/templates/.githooks/docsweep-check.py +177 -0
  159. docsweep-0.1.0/templates/AGENTS.md +46 -0
  160. docsweep-0.1.0/templates/AGENT_GUIDE.md +42 -0
  161. docsweep-0.1.0/templates/CLAUDE.md +276 -0
  162. docsweep-0.1.0/templates/install-hooks.ps1 +44 -0
  163. docsweep-0.1.0/templates/install-hooks.sh +40 -0
  164. docsweep-0.1.0/tests/test_activity.py +257 -0
  165. docsweep-0.1.0/tests/test_atomic.py +156 -0
  166. docsweep-0.1.0/tests/test_audit_fixes.py +226 -0
  167. docsweep-0.1.0/tests/test_audit_server.py +162 -0
  168. docsweep-0.1.0/tests/test_brief.py +193 -0
  169. docsweep-0.1.0/tests/test_c2_commands.py +452 -0
  170. docsweep-0.1.0/tests/test_c5_features.py +223 -0
  171. docsweep-0.1.0/tests/test_capture.py +189 -0
  172. docsweep-0.1.0/tests/test_config_due.py +129 -0
  173. docsweep-0.1.0/tests/test_cross.py +159 -0
  174. docsweep-0.1.0/tests/test_db_index.py +392 -0
  175. docsweep-0.1.0/tests/test_detect.py +75 -0
  176. docsweep-0.1.0/tests/test_engine.py +191 -0
  177. docsweep-0.1.0/tests/test_export.py +145 -0
  178. docsweep-0.1.0/tests/test_extras.py +579 -0
  179. docsweep-0.1.0/tests/test_githooks.py +110 -0
  180. docsweep-0.1.0/tests/test_index_prune.py +106 -0
  181. docsweep-0.1.0/tests/test_index_stats.py +129 -0
  182. docsweep-0.1.0/tests/test_index_vacuum.py +57 -0
  183. docsweep-0.1.0/tests/test_index_wal.py +52 -0
  184. docsweep-0.1.0/tests/test_interactive.py +265 -0
  185. docsweep-0.1.0/tests/test_invariants.py +167 -0
  186. docsweep-0.1.0/tests/test_mcp_tools.py +82 -0
  187. docsweep-0.1.0/tests/test_mcp_write_tools.py +319 -0
  188. docsweep-0.1.0/tests/test_parser.py +117 -0
  189. docsweep-0.1.0/tests/test_resurrect.py +160 -0
  190. docsweep-0.1.0/tests/test_server.py +189 -0
  191. docsweep-0.1.0/tests/test_server_board.py +600 -0
  192. docsweep-0.1.0/tests/test_server_bulk.py +222 -0
  193. docsweep-0.1.0/tests/test_server_okf.py +159 -0
  194. docsweep-0.1.0/tests/test_services_archive.py +65 -0
  195. docsweep-0.1.0/tests/test_services_content.py +66 -0
  196. docsweep-0.1.0/tests/test_services_due.py +130 -0
  197. docsweep-0.1.0/tests/test_services_frontmatter.py +111 -0
  198. docsweep-0.1.0/tests/test_services_status.py +171 -0
  199. docsweep-0.1.0/tests/test_state.py +154 -0
  200. docsweep-0.1.0/tests/test_templates_gen.py +151 -0
  201. docsweep-0.1.0/tests/test_triage_schema.py +172 -0
  202. docsweep-0.1.0/tests/test_undo.py +135 -0
@@ -0,0 +1,5 @@
1
+ # docsweep 自身のプロジェクト設定(ドッグフーディング)
2
+ #
3
+ # archive はリポルート直下ではなく gitignore 済みの docs/local/ 配下へ移送する。
4
+ # ルート直下 archive/ は git 追跡対象になり、非公開の作業ログが公開リポに乗るため。
5
+ archive_dir: docs/local/archive
@@ -0,0 +1,85 @@
1
+ # PyPI publish via Trusted Publishing (OIDC)
2
+ #
3
+ # トリガー: タグ `v*` の push(例: `v0.1.0`)
4
+ # 認証: PyPI の Pending publisher で登録した OIDC(API トークン不要)
5
+ # 環境: `pypi`(リポジトリ Settings → Environments で作成。承認制にもできる)
6
+ #
7
+ # 手動公開フロー:
8
+ # 1. pyproject.toml の version を上げる
9
+ # 2. git tag v0.1.0 && git push --tags
10
+ # 3. このワークフローが build → publish を実行
11
+
12
+ name: publish
13
+
14
+ on:
15
+ push:
16
+ tags:
17
+ - "v*"
18
+ workflow_dispatch: {}
19
+
20
+ jobs:
21
+ build:
22
+ name: Build sdist + wheel
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - uses: actions/setup-python@v5
28
+ with:
29
+ python-version: "3.12"
30
+
31
+ - name: Install build tooling
32
+ run: python -m pip install --upgrade build
33
+
34
+ - name: Build distributions
35
+ run: python -m build
36
+
37
+ - name: Upload artifacts
38
+ uses: actions/upload-artifact@v4
39
+ with:
40
+ name: dist
41
+ path: dist/
42
+
43
+ publish:
44
+ name: Publish to PyPI
45
+ needs: build
46
+ runs-on: ubuntu-latest
47
+ environment: pypi
48
+ permissions:
49
+ id-token: write # OIDC for Trusted Publishing
50
+ steps:
51
+ - name: Download artifacts
52
+ uses: actions/download-artifact@v4
53
+ with:
54
+ name: dist
55
+ path: dist/
56
+
57
+ - name: Publish via Trusted Publishing
58
+ uses: pypa/gh-action-pypi-publish@release/v1
59
+
60
+ github-release:
61
+ name: Create GitHub Release
62
+ needs: publish
63
+ runs-on: ubuntu-latest
64
+ if: startsWith(github.ref, 'refs/tags/v')
65
+ permissions:
66
+ contents: write # gh release create
67
+ steps:
68
+ - uses: actions/checkout@v4
69
+ with:
70
+ fetch-depth: 0 # gh --generate-notes が前タグまで遡るため
71
+
72
+ - name: Download artifacts
73
+ uses: actions/download-artifact@v4
74
+ with:
75
+ name: dist
76
+ path: dist/
77
+
78
+ - name: Create GitHub Release with auto-generated notes
79
+ env:
80
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
81
+ run: |
82
+ gh release create "${GITHUB_REF_NAME}" \
83
+ dist/*.whl dist/*.tar.gz \
84
+ --title "${GITHUB_REF_NAME}" \
85
+ --generate-notes
@@ -0,0 +1,83 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ .eggs/
7
+ build/
8
+ dist/
9
+ *.egg
10
+ .venv/
11
+ venv/
12
+ env/
13
+ .env
14
+
15
+ # Test / coverage
16
+ .pytest_cache/
17
+ .coverage
18
+ .coverage.*
19
+ htmlcov/
20
+ .tox/
21
+ .mypy_cache/
22
+ .ruff_cache/
23
+
24
+ # Packaging (PyInstaller)
25
+ *.spec
26
+ *.manifest
27
+
28
+ # OS / editor
29
+ .DS_Store
30
+ Thumbs.db
31
+ desktop.ini
32
+ .idea/
33
+ .vscode/
34
+ *.swp
35
+
36
+ # AI ツールのローカル状態・生成物
37
+ .claude/
38
+ *.log
39
+ *.jsonl
40
+ *.tmp
41
+ *.bak
42
+ *.orig
43
+ *.rej
44
+
45
+ # === 機密・ローカル専用ファイルは絶対にコミットしない ===
46
+ # --- 認証情報・secrets・鍵 ---
47
+ *.pem
48
+ *.key
49
+ *.p12
50
+ *.pfx
51
+ *.ppk
52
+ id_rsa
53
+ id_dsa
54
+ id_ecdsa
55
+ id_ed25519
56
+ .env.*
57
+ *.env
58
+ secrets.*
59
+ *secret*
60
+ *credential*
61
+ *token*
62
+ .netrc
63
+ .npmrc
64
+ .pypirc
65
+
66
+ # --- ローカル専用ファイル ---
67
+ *.local
68
+ *.local.*
69
+ *.secret.*
70
+
71
+ # docsweep の個人作業ログ(公開しない)
72
+ docs/local/
73
+
74
+ # docsweep 実行時の生成物(スキャン結果・履歴)
75
+ INDEX.md
76
+ INDEX.json
77
+ .docsweep/
78
+
79
+ # テスト用 fixture / golden は上の無視パターンより優先して追跡する。
80
+ # docsweep は INDEX.md・*.jsonl(移動ログ)・各種 *.md を生成するため、
81
+ # それらの期待値を testdata に置くと黙って脱落する。ディレクトリ単位で明示許可。
82
+ !**/testdata/**
83
+ !**/tests/fixtures/**
@@ -0,0 +1,20 @@
1
+ # Agent Entry Point (docsweep)
2
+
3
+ This repository's operational guidance for **developing docsweep itself** is
4
+ maintained in `CLAUDE.md`.
5
+
6
+ - Project overview & dev guide: `./CLAUDE.md`
7
+ - Naming / status convention (human-facing spec): `./docs/conventions.md`
8
+ - Design source of truth (private, may be absent in a fresh clone): `./docs/local/`
9
+ - Local/private additions (if present, not committed): `./CLAUDE.local.md` / `./AGENTS.local.md`
10
+
11
+ ⚠️ **Do not confuse this with `templates/AGENTS.md` and `templates/CLAUDE.md`.**
12
+ Those under `templates/` are the **shipped product** — the ruleset that *adopters*
13
+ copy into their own projects. The root `CLAUDE.md` / `AGENTS.md` (this file) are the
14
+ **maintainer-facing** dev guide for this OSS repo.
15
+
16
+ Personal/global AI rules are intentionally kept outside this repository. Use each AI
17
+ tool's supported global instruction location for user-specific rules; this file must
18
+ remain valid for a fresh public clone with no private files.
19
+
20
+ If any project guidance conflicts, follow `CLAUDE.md`.
@@ -0,0 +1,194 @@
1
+ # Changelog
2
+
3
+ 本ファイルは [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/) の考え方を緩く参照しています。
4
+ バージョニングは [SemVer](https://semver.org/lang/ja/) に従います。
5
+
6
+ ## [0.1.0] - 2026-07-03
7
+
8
+ 初回リリース。AI コーディングツール(Claude Code / Codex 等)が生成する
9
+ `plan_*.md` / `bugfix_*.md` / `pending_*.md` の蓄積・陳腐化問題を解決する CLI + Web UI + MCP サーバー。
10
+
11
+ 主な機能:
12
+
13
+ - H1 ステータスラベル(`[完了]` / `[計画]` / `[様子見]` / `[保留]` / `[廃止]`)の機械的読み取り
14
+ - 完了したファイルを各プロジェクトの `archive/` へ自動移送
15
+ - 陳腐化を「要判断」フラグで可視化
16
+ - 複数プロジェクトを横断する INDEX
17
+ - AI エージェント向け **MCP サーバー**(`scan` / `triage` / `apply` / `sweep` / `promote` / `summary` / `index` / `inject` / `eject` + 書き込みツール 4 種)
18
+ - 個人グローバル設定への運用ルール **`inject --global`**(Claude Code / Codex 対応)
19
+ - Web UI: 看板(カンバン)ボード(FastAPI + htmx・`docsweep[web]`)
20
+ - 対話レビュー(`--review` / `docsweep[review]`)
21
+
22
+ 以下は初版に含まれる機能の開発経緯別の内訳。
23
+
24
+ ### Added — OKF(Open Knowledge Format)採用 Phase 3(親 plan `okf-adoption_2026-06-29` C3)
25
+
26
+ - README 冒頭に OKF 互換宣言を追加([OKF 仕様](https://zenn.dev/knowledgesense/articles/14a874a9f423bb)
27
+ へのリンク + docsweep 固有の追加規約「固定 type 集合・H1 ラベル併用」の明示)
28
+ - 配布物 `templates/CLAUDE.md` に OKF 準拠 frontmatter ブロック例・既存採用者向け移行ガイド
29
+ (`migrate-frontmatter` / `fix-related` / `export --okf` / pre-commit hook 案内)を追記
30
+ - 配布物 `templates/AGENTS.md` の frontmatter 例を OKF 推奨フィールド込みに更新
31
+ (`type` / `tags` / `owner` / `review_status` / `related` / `last_reviewed`)
32
+ - `docs/okf-mapping.md`(新規)— OKF type 語彙 / status 語彙 / review_status 値域と
33
+ docsweep 固定語彙との対応表
34
+ - `docs/okf-export-format.md`(新規)— `export --okf` の zip 構造と `okf-manifest.json` 仕様
35
+ - **`docsweep export --okf` サブコマンド**を追加(`docsweep/export.py` 新規)
36
+ - スキャン範囲内の plan / bugfix / pending を frontmatter ごとそのまま zip に取り出し、
37
+ OKF 互換語彙との対応表 `okf-manifest.json` を同梱
38
+ - `--out <path>` で出力先指定(既定 `./docsweep-okf-<date>.zip`)
39
+ - `--include-archive` で archive 配下も含める
40
+ - `--project` で特定プロジェクトに絞る
41
+ - `--json` で結果を機械可読出力
42
+ - 「docsweep を抜けても md が腐らない」を実演する材料
43
+ - 配布物 pre-commit hook(opt-in)を追加
44
+ - `templates/.githooks/docsweep-check.py` — frontmatter 不整合検知(type/status の値域違反、
45
+ review_status が許容外、related に存在しない md 指定)。docsweep 未インストール環境でも
46
+ 動くスタンドアロン実装(PyYAML 無しでも最小 parser でフォールバック)
47
+ - `templates/install-hooks.sh` / `install-hooks.ps1` — 配置スクリプト(POSIX / Windows)
48
+
49
+ ### Added — OKF 採用 Phase 1 / 2 / 4(親 plan `okf-adoption_2026-06-29` C1 / C2 / C4)
50
+
51
+ - **Phase 1(C1)— frontmatter 併用パーサ + テンプレ + triage 拡張 + インタラクティブ triage**
52
+ - `docsweep/detect.py` を拡張: frontmatter > H1 > filename の優先順で type / status を検出。
53
+ frontmatter と H1 が矛盾する md は warn を出してユーザー判断に委ねる(自動上書きしない)
54
+ - `docsweep new <type> <topic>` のテンプレに OKF frontmatter ブロックを追加
55
+ (`type` / `status` / `tags: []` / `owner:` / `review_status: draft` / `related: []` /
56
+ `last_reviewed: <today>`)
57
+ - `docsweep triage --tag <name>` で frontmatter `tags:` 絞り込み、`--show owner/tags` で
58
+ 表示列追加
59
+ - `docsweep triage --review` でインタラクティブ triage(c=完了 / w=様子見 / x=廃止 /
60
+ s=スキップ / l=後で / o=md を開く / q=終了 の 1 キー判定 → 終了時に一括処理)
61
+ - **Phase 2(C2)— 一括変換 + related 双方向化 + 陳腐化検知 + 派生コマンド一式**
62
+ - `docsweep migrate-frontmatter --dry-run` / `--apply` — H1 ラベル + ファイル名プレフィックスから
63
+ frontmatter を生成し既存 md に非破壊挿入(H1 ラベルは温存)
64
+ - `docsweep fix-related` — 片側参照 `related: [B]` を B 側にも追記して対称化
65
+ - `docsweep show <file>` — 指定 md を参照している plan/bugfix/pending を逆参照表示
66
+ - `docsweep stale` — `review_status` 別の前倒し陳腐化候補を列挙
67
+ (draft 14 日 / review 7 日 / published `last_reviewed` 90 日経過)
68
+ - `docsweep context <file>` — 本文 + 親 plan + related の bugfix/pending を 1 つの
69
+ AI 用プロンプト文字列で stdout 出力(`--clipboard` で OS クリップボードへ)
70
+ - `docsweep claim <file>` / `--unclaim` — frontmatter の owner を現ユーザーで上書き
71
+ (解決順: `docsweep config user.name` → `git config user.name` → OS ログイン名)
72
+ - `docsweep config user.name <name>` / `user.email <email>` — `~/.docsweep/config.yaml` の
73
+ user 設定を CLI / Web UI 双方から読み書き
74
+ - `docsweep timeline <topic>` — topic を含む plan/bugfix/pending を時系列で列挙
75
+ (`--format markdown|plain|json`)
76
+ - `docsweep find --owner X --tag Y --status 実行中 --review-status draft` — 自由クエリ
77
+ - `docsweep completion bash|zsh|pwsh` — シェル補完スクリプト生成
78
+ - **Phase 4(C4)— カンバン Web UI の OKF 対応**
79
+ - カード表示に `tags` バッジ / `owner` / `related` 件数アイコンを追加
80
+ - 詳細パネルに `review_status` / `last_reviewed` / `related` 一覧 / 逆参照を表示
81
+ - tags / owner / related をインライン編集・書き戻し(services/frontmatter.py 経由・
82
+ H1 ラベル温存)
83
+ - 検索バーに `--tag` / `--owner` / `--status` 相当の絞り込み UI を追加
84
+ - Web UI 上で claim / unclaim 可能(CLI の `claim` と同じファイルを更新)
85
+
86
+ ### Added — 看板方式 Web UI と MCP 書き込み口(親 plan `kanban-board-write-ops`)
87
+
88
+ - frontmatter `due:` の書き込み側基盤を実装
89
+ - `docsweep/atomic.py`: アトミック書き込み(`os.replace` 経由)+ 楽観ロック(`expected_mtime`)+ バックアップ(`.docsweep/backup/`・30 日保持・自動掃除)
90
+ - `docsweep/state.py`: `.docsweep/state.json`(`postpone_count` / `due_history` / `label_history`・v1 スキーマ)の読み書き層
91
+ - 軸 1(ラベル)の遷移時に `postpone_count` を自動リセット(`[計画]→[実行中]` `[実行中]→[様子見]` `[対応中]→[様子見]` `[保留]→[計画]/[実行中]`)
92
+ - 書き込み API の services 層(CLI / MCP / Web UI が共通で呼ぶ単一実装)
93
+ - `docsweep/services/due.py`: `update_due` — frontmatter `due:` 書き換え + `postpone_count` インクリメント + 相対指定(`today` / `+1d` / `+1w` / `+1m`)解釈
94
+ - `docsweep/services/status.py`: `update_status` — H1 ラベル書き換え + ファイル種別×ラベル組み合わせバリデーション + 自動リセット連携
95
+ - `docsweep/services/content.py`: `update_content` — 本文全置換(楽観ロック必須)
96
+ - `docsweep/services/archive.py`: `archive_done` — `[完了]` / `[廃止]` のみ移送(`[様子見]` は明示指定でも拒否・寝かせを守る)
97
+ - 配布規約 `templates/CLAUDE.md` と運用解説 `docs/conventions.md` に「期日(due)と看板方式」セクションを追加
98
+ - 配布設定サンプル `templates/.docsweep.yaml` に `due:` / `web_ui:` セクションのコメント例を追加
99
+ - `templates/AGENTS.md` の frontmatter 例に `due:` を追記
100
+ - Web UI に **看板(カンバン)ボード**を新設(`/board`・FastAPI + htmx)
101
+ - 3 列レイアウト(🔴やり忘れ / 🟡今日 / 🟢実行中)+ 折りたたみ(▼卒業判定 / ▶未来期日 / ▶期日未設定 / ▶archive 候補)
102
+ - カード UI(ラベルバッジ / 期日バッジ / 先送り回数バッジ + 3 ボタン)
103
+ - ラベル変更(バッジクリック → セグメント、数字キー 1-6)
104
+ - 期日変更(クイック +1d / +3d / +1w / +1m / 任意、キーボード d / w / m)
105
+ - 本文編集ペイン(textarea + Ctrl+S + mtime 競合検出 → 409 Conflict)
106
+ - 列ドラッグ&ドロップは**期日操作のみ**(ラベル変更には使わない・直交軸を守る)
107
+ - 旧 dashboard(`/`)は無改変で残存
108
+ - MCP **書き込みツール 4 種**を追加(`docsweep mcp` 経由で AI から呼べる)
109
+ - `update_status(path, new_status, expected_mtime?)` — H1 ラベル書き換え + ファイル種別×ラベル検証 + `postpone_count` 自動リセット + `[完了]` / `[廃止]` で archive 自動連携
110
+ - `update_due(path, new_due, reason?, expected_mtime?)` — frontmatter `due:` 書き換え + 相対指定(`today` / `+1d` / `+1w` / `+1m`)解釈 + `postpone_count` インクリメント + しきい値 warning
111
+ - `update_content(path, new_content, expected_mtime?)` — 本文全置換 + 楽観ロック + H1 欠落警告
112
+ - `archive_done(paths?, auto?)` — `[完了]` / `[廃止]` のみ archive 移送(`[様子見]` は明示指定でも拒否)
113
+ - 既存 MCP `triage` の戻り値スキーマを拡張(旧クライアント非破壊)
114
+ - 各 item に `due` / `due_raw` / `due_parse_error` / `overdue_kind` / `overdue_days` / `postpone_count` / `label_history_count` を追加
115
+ - `allowed_actions` 集合に `update_due` / `update_content` を追加
116
+ - `summary` ブロックに `overdue_todo` / `today` / `overdue_graduate` / `future` / `missing_due` のカウントを追加
117
+ - パス境界チェック層を新設(`docsweep/security/path.py`)— スキャンルート配下のみ書き込み可・`realpath` 解決後にスコープ境界チェック・`..` 拒否・`.md` ファイルのみ
118
+ - 不変条件のホワイトボックステストを追加(`tests/test_invariants.py`)— 物理削除口の不存在を AST レベルで担保
119
+ - `Config` に `due:` セクションを追加(`due_warn_threshold` / `due_alert_threshold` / `due_default_offset_days`)— `.docsweep.yaml` の `due:` ブロックから上書き可能
120
+ - Web UI / MCP の `update_due` がしきい値を Config から受け取るように配線(`postpone_warn_threshold` / `postpone_alert_threshold` が実際に効くようになった)
121
+ - `docsweep new <type> <topic>` で frontmatter `due:` 初期値を自動付与(`Config.due_default_offset_days` から `today + N` を計算)
122
+ - `plan` は既定 today+7、`pending` は today+14、`bugfix` は新規時に付けない(`[様子見]` 遷移時に追記する設計)
123
+ - `--due YYYY-MM-DD` で明示指定、`--no-due` で自動付与を抑止
124
+ - Web UI 編集ペイン用に `GET /api/cards/raw` を新規追加 — 編集 textarea を生 MD で初期化(プレビュー HTML のテキスト化では Markdown 構造が壊れるため)
125
+ - 受信トレイ (`/`) のサイドバーに「📋 看板(カンバン)」リンクを追加(新旧 UI の導線確保)
126
+
127
+ ### Added — 看板の一括編集(派生 plan `kanban-bulk-edit`)
128
+
129
+ - 看板の全 7 セクション(3 列 + 卒業判定 + 未来期日 + 期日未設定 + archive 候補)を横断して一括操作:
130
+ - 各カードに checkbox を追加
131
+ - 各セクションヘッダに「全選択 + 4 ボタン(+1d/+1w/着手/廃止)」セット
132
+ - 卒業判定は「着手」の代わりに「完了」、archive 候補は「archive へ」のみ
133
+ - 上部 sticky バー(N 件選択中・+1d/+1w/着手/廃止/archive/解除/画面全選択)
134
+ - キーバインド `a` = 画面全カード選択 / `Esc` = ピッカー閉じ + 選択解除
135
+ - Web UI 専用 bulk API 3 種(`/api/cards/bulk/{due,status,archive}`)— 既存 services を for ループで呼ぶ薄いラッパ
136
+ - 部分成功 `{ok:[], failed:[]}` を返す(1 件失敗しても他は続行)
137
+ - スコープ外パス / mtime conflict / validation エラーは個別に `failed[]` に振り分け
138
+ - `[完了]` / `[廃止]` 一括指定で archive 移送が連動(単数 API と同じ閉じた口を通す)
139
+ - 確認ダイアログ強化 — `[廃止]` / `[完了]` / archive は ⚠ 強警告メッセージ
140
+ - 部分失敗時の集約ダイアログ — 「成功 N 件/失敗 M 件」と失敗 path の先頭 5 件を表示
141
+ - カードの「📂 プロジェクト名」バッジをクリックで **プロジェクト単位選択切替**(同じプロジェクトのカードだけ全選択・他プロジェクトは解除・再クリックで全解除)。「1 プロジェクトずつ捌く」ワークフロー用
142
+ - バルクバーに **プロジェクト絞り込みドロップダウン**(名前順チェックリスト・部分選択 indeterminate 表示・全 ON / 全 OFF クイックボタン)
143
+
144
+ ### Added — UX 拡張(kanban-bulk-edit 後追加)
145
+
146
+ - **Undo(直近 archive バッチの取り消し)** — `archive_done` 実行ごとに `batch_id` を生成(`MoveLogEntry` スキーマ拡張)、`undo_last_batch()` で逆操作(archive 配下 → 元の場所へ shutil.move、restore エントリで二重 Undo 防止)。Web UI は archive 後に右下トーストで「↶ Undo」ボタンを 10 秒表示
147
+ - `POST /api/cards/undo` — Undo API エンドポイント(services 層のラッパ)
148
+ - **カード検索ボックス** — topbar に検索 input(ファイル名・タイトル・概要から絞り込み)。`/` キーでフォーカス・`Esc` でクリア。検索ヒット件数も表示
149
+ - **絶対日付指定の一括設定** — バルクバーに「📅 日付」ボタン → date picker dialog → 選択 N 件の `due` を YYYY-MM-DD で一括設定
150
+
151
+ ### Changed — Web UI を看板に集約(plan `consolidate-to-board`)
152
+
153
+ - 旧 dashboard(`/`)を廃止し、Web UI を **看板(`/board`)一本に集約**
154
+ - `/` は `/board` へ **302 リダイレクト**(トークン引き継ぎ)
155
+ - 旧 dashboard 専用ルート `GET /list` / `GET /fragment` は削除
156
+ - 看板 topbar に **「⚙ 設定・注入」モーダル** を追加(プロジェクト一覧 / inject / eject / グローバル inject Claude・Codex 切替)
157
+ - 看板 topbar に **health chip**(上位 5 プロジェクトの最古経過日数を `📊 mer 90d` 形式で表示)
158
+ - 旧 dashboard テンプレ・CSS・JS(`dashboard.html` / `_dashboard_body.html` / `_list.html` / `index.html` / `app.css` / `app.js`)は当初残置としたが、その後**物理撤去**(下記 Removed 参照)
159
+ - 看板の編集ペインからは引き続き `/preview` `/api/cards/raw` を使用
160
+
161
+ ### Changed
162
+
163
+ - `docsweep new` で生成される plan / bugfix / pending テンプレから `> 最終更新:` 行を撤去
164
+ (`st_mtime` ベースで判定しており重複情報だったため)
165
+ - 配布規約 `templates/CLAUDE.md` と運用解説 `docs/conventions.md` からも
166
+ `> 最終更新: ...` 行の指示・記述を撤去(書く側と読む側を整合)
167
+ - 自リポ `CLAUDE.md` 先頭の `> 最終更新:` 行を撤去(ドッグフーディング整合)
168
+
169
+ ### Removed — 旧 dashboard 資産と TS+Vite スタックの撤去(plan `legacy-stack-retirement` C1/C2)
170
+
171
+ - Web から到達不能になっていた旧 dashboard 資産を物理撤去
172
+ (テンプレ 4 枚 + `static/app.js` / `app.css` + server 内の死コードヘルパ群)
173
+ - フロントエンドの TS+Vite+bun ビルドスタック(`src/` / `vite.config.ts` / `tsconfig.json` /
174
+ `package.json` / `bun.lock`)を撤去し、看板の plain JS + `htmx.min.js` に一本化
175
+ (**Python 環境だけで開発・配布が完結**。Node/bun 不要)
176
+
177
+ ### Fixed
178
+
179
+ - archive 移送先を**対象プロジェクト自身の `.docsweep.yaml` から解決**するように修正。
180
+ sweep / promote は複数プロジェクト横断で動くのに archive 先が起動時の単一 config でしか
181
+ 解決されず、`--project-dir` を明示しないとプロジェクト設定の `archive_dir` が無視されていた
182
+
183
+ ### 不変条件(新機能でも厳守)
184
+
185
+ - 物理削除の口を実装として持たない(最悪でも `archive_done` 止まり・復元可能)
186
+ - `[様子見]` は明示指定でも archive されない(寝かせを守る)
187
+ - 期日切れだけでは絶対に `[廃止]` 化しない(AI / 人の明示意図が必須)
188
+ - Web UI に新しい特権を持たせない(CLI / MCP と同じ services 関数を呼ぶ)
189
+ - バインド `127.0.0.1` 固定・スキャンルート配下のみ書き込み可・`realpath` 解決後にスコープ境界チェック
190
+
191
+ `docsweep/detect.py` の `>` 引用行スキップロジックと
192
+ `tests/test_detect.py` の後方互換 fixture は残置(過去ファイルとの互換のため)。
193
+
194
+ [0.1.0]: https://github.com/ishizakahiroshi/docsweep/releases/tag/v0.1.0
@@ -0,0 +1,90 @@
1
+ # docsweep 開発ガイド
2
+
3
+ > このファイルは **docsweep そのものを開発する** ための AI 向けプロジェクト固有ガイドです。
4
+ > リポジトリを clone した人・AI が常時参照する想定の最小ロード分だけを置きます。
5
+
6
+ > ⚠️ **`templates/CLAUDE.md` と混同しないこと。** あちらは **配布物**(採用者が自分のプロジェクトに
7
+ > 取り込む AI 作業ドキュメント運用ルールの正本テンプレート)です。本ファイルは
8
+ > **この OSS の中の人向け** 開発ガイドであり、役割がまったく異なります。
9
+
10
+ ## プロジェクト概要
11
+
12
+ **docsweep** — AI コーディングツール(Claude Code / Codex 等)が生成する
13
+ `plan_*.md` / `bugfix_*.md` / `pending_*.md` の **蓄積・陳腐化問題を解決する
14
+ クロスプラットフォーム CLI + Web UI ツール**。H1 ステータスラベル(`[完了]` / `[計画]` /
15
+ `[廃止]` 等)を機械的に読み取り、完了を各プロジェクトの `archive/` へ自動移送し、
16
+ 陳腐化を「要判断」フラグで可視化し、複数プロジェクトを横断 INDEX で一望できるようにする。
17
+
18
+ - GitHub リポジトリ名: `docsweep`
19
+ - 配布: `pip install docsweep` + 単体バイナリ(PyInstaller)、Win / Mac / Linux 対応
20
+ - 設計の正本: [docs/local/plan_v0.1.0-product-requirements.md](docs/local/plan_v0.1.0-product-requirements.md)
21
+ および [docs/local/plan_state-tag-orthogonalization.md](docs/local/plan_state-tag-orthogonalization.md)
22
+
23
+ > 個人/グローバルな AI ルール(言語・確認フォーマット・スクリーンショット規約・
24
+ > ターン終端の出力ルール等)は **このリポジトリには置かない**。各利用者が使う AI ツールの
25
+ > グローバル設定に置くこと。公開リポジトリの `CLAUDE.md` / `AGENTS.md` は
26
+ > **プロジェクト固有ルールだけ**を扱い、private ファイルが無い fresh clone でも有効であること。
27
+
28
+ ## このリポジトリ自身のドキュメント運用
29
+
30
+ docsweep は **自分自身のルールでドッグフーディング** する。
31
+ `docs/local/` に作業記録(plan / bugfix / pending)を残す際は、**配布物である
32
+ [templates/CLAUDE.md](templates/CLAUDE.md) の「AI 作業ドキュメント運用ルール」に従う**
33
+ (命名・H1 ステータスラベル・必須セクション・ライフサイクルの正本はあちら)。
34
+ 規約の人間向け解説は [docs/conventions.md](docs/conventions.md)。
35
+
36
+ - `docs/local/` は個人作業ログ(gitignore 済み・非公開)
37
+ - 規約を変更するときは `templates/CLAUDE.md`(正本)→ `docs/conventions.md`(解説)の
38
+ 順で更新し、両者をズラさない
39
+
40
+ ## 技術スタック(予定)
41
+
42
+ | レイヤ | 採用 |
43
+ |------|------|
44
+ | 言語 | Python(クロスプラットフォーム) |
45
+ | パッケージ | `docsweep/`(`pip install docsweep`) |
46
+ | CLI | サブコマンド + フラグ(`--auto` / `--dry-run` / `--review` / `--json` / `--report` / `--summary` / `new`) |
47
+ | インタラクティブ UI | `InquirerPy` / `questionary`(`--review` のチェックリスト専用) |
48
+ | 設定 | YAML(`~/.docsweep/config.yaml` / プロジェクトの `.docsweep.yaml`) |
49
+ | 単体配布 | PyInstaller |
50
+
51
+ ## リポジトリ構成(予定)
52
+
53
+ ```
54
+ docsweep/
55
+ ├─ docsweep/ # Python ツール本体(CLI・コアエンジン・Web UI)
56
+ ├─ templates/ # 配布物(採用者が取り込む)
57
+ │ ├─ CLAUDE.md # Claude Code 向けルールの正本テンプレ
58
+ │ ├─ AGENTS.md # Codex 向けの薄いポインタ
59
+ │ └─ .docsweep.yaml# 設定サンプル
60
+ ├─ docs/
61
+ │ ├─ conventions.md # 命名・ステータス規約の人間向け解説
62
+ │ ├─ mockups/ # Web UI モックアップ
63
+ │ └─ local/ # 設計書・作業ログ(非公開・gitignore)
64
+ └─ CLAUDE.md / AGENTS.md # ← 本ファイル(リポジトリ開発者向け)
65
+ ```
66
+
67
+ ## クロスプラットフォーム原則
68
+
69
+ - **パス操作は `pathlib.Path` / `os.path` を使い、区切り文字をハードコードしない**。
70
+ - **ホームディレクトリ起点の設定・状態は全 OS 共通の `~/.docsweep/`**
71
+ (Windows でも `%USERPROFILE%\.docsweep\` で同じ意味になるようにする)。
72
+ - **ファイル移送(archive 移動)は同一ボリューム前提に依存しない**(`shutil.move` 等で吸収)。
73
+ - **インタラクティブ UI は `--review` 専用**。`--auto` / `--json` は非対話を厳守
74
+ (cron・CI・AI エージェント委譲向け。プロンプトを出さない)。
75
+
76
+ ## 作業運用ルール(AI 共通)
77
+
78
+ - **ビルド・パッケージング・公開・コミット・プッシュは全てユーザーが行う**。
79
+ AI からは自動実行も提案もしない(確認質問も出さない)。
80
+ - 例外: ユーザーが明示的に「ビルドして」「`pip install -e .` 走らせて」「コミットして」等と
81
+ 指示した場合のみ。
82
+ - 対象: `pyinstaller` / `pip install` / `pnpm publish` / `git commit` / `git push` / `git tag` 等。
83
+ - 型チェック・テスト実行(`pytest` / `ruff` / `mypy` 等、コードの正しさ確認)は本ルールの対象外。
84
+ - 完了報告では「公開しますか?」のような提案を出さず、コード変更の要約だけ伝える。
85
+
86
+ ## 公開・配布の方針
87
+
88
+ - 秘匿情報が無ければ全公開(ツール本体 + テンプレ + 規約ドキュメントをセットで)。
89
+ - 配布の既定は **npm ではなく PyPI**(Python パッケージ)。詳細・npm 連携が絡む場合の
90
+ 運用は予約済みハンドル/トークンの状況に依存するため、公開作業前にユーザーへ確認する。
docsweep-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Hiroshi Ishizaka (ishizakahiroshi)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,47 @@
1
+ # Third-Party Notices
2
+
3
+ docsweep 自体は MIT License で配布されています(リポジトリ直下 `LICENSE` 参照)。
4
+ 本ファイルは **配布物に bundle されているサードパーティ・ソフトウェア** の出典と
5
+ ライセンスを記録するためのものです。
6
+
7
+ > 注: ここに挙げる依存はいずれも **法的に著作権表記が必須なライセンスではありません**
8
+ > (bundle 対象は現状 0BSD のみ)。それでも透明性・将来 BSD/MIT 等を bundle する場合の
9
+ > 足場・利用者への情報提供の観点から記録を残しています。
10
+ >
11
+ > **pip install で別途解決される依存**(PyYAML / FastAPI / Jinja2 / mcp 等)は
12
+ > bundle ではないため本ファイル対象外です。各依存パッケージは PyPI 上で自身の
13
+ > LICENSE を同梱して配布されており、ユーザーは pip 経由で個別に受け取ります。
14
+
15
+ ## Bundled
16
+
17
+ ### htmx 1.9.12
18
+
19
+ - 用途: Web UI の HTML over the wire (HTMX) ライブラリ
20
+ - 同梱パス: `docsweep/server/static/htmx.min.js`
21
+ - 出典: https://github.com/bigskysoftware/htmx
22
+ - ライセンス: **BSD Zero Clause License (0BSD)**
23
+ - 著作権表記: 0BSD のため不要(参考までに原 LICENSE 全文を下記に記載)
24
+
25
+ ```
26
+ # Zero-Clause BSD License
27
+
28
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
29
+
30
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
31
+ ```
32
+
33
+ ## Runtime dependencies (not bundled — pulled by pip)
34
+
35
+ 参考。これらは wheel に含まれず、ユーザーの `pip install` 時に PyPI から個別に取得されます。
36
+ 各パッケージは自身の LICENSE を同梱して配布されるため、本ファイルでの転載は不要です。
37
+
38
+ - **PyYAML** — MIT License — 設定ファイル読み書き
39
+ - **fastapi** / **uvicorn** / **jinja2** / **markdown** / **python-multipart** / **nh3** — Web UI(`docsweep[web]`)
40
+ - **questionary** — 対話レビュー(`docsweep[review]`)
41
+ - **mcp** — MCP stdio サーバー(`docsweep[mcp]`)
42
+
43
+ ## メンテナンス方針
44
+
45
+ - 新しい静的アセット(JS / CSS / フォント / 画像のうち外部由来のもの)を `docsweep/server/static/` 等に bundle した場合は、**本ファイルの "Bundled" セクションに追記**する
46
+ - 「bundle 追加 → NOTICES 追記」を忘れない仕組みは `pypi-publish` スキルの前提チェックに記載
47
+ - pip 依存(`pyproject.toml` の dependencies / optional-dependencies)の増減は本ファイル対象外