forge-me-notes 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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenMash contributors
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,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: forge-me-notes
3
+ Version: 0.1.0
4
+ Summary: Build and maintain Obsidian knowledge bases with LLM assistance
5
+ Author: OpenMash contributors
6
+ License: MIT
7
+ Project-URL: Homepage, https://codeberg.org/DenvaDude/forge-me-notes
8
+ Project-URL: Repository, https://codeberg.org/DenvaDude/forge-me-notes
9
+ Project-URL: Issues, https://codeberg.org/DenvaDude/forge-me-notes/issues
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: pyyaml>=6.0
14
+ Requires-Dist: python-frontmatter>=1.0.0
15
+ Requires-Dist: python-dotenv>=1.0.0
16
+ Requires-Dist: anthropic>=0.25.0
17
+ Provides-Extra: openai
18
+ Requires-Dist: openai>=1.0.0; extra == "openai"
19
+ Provides-Extra: ollama
20
+ Requires-Dist: requests>=2.31.0; extra == "ollama"
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest>=7.0; extra == "dev"
23
+ Requires-Dist: black>=24.0; extra == "dev"
24
+ Requires-Dist: ruff>=0.4; extra == "dev"
25
+ Dynamic: license-file
26
+
27
+ # forge-me-notes
28
+
29
+ > 🇩🇪 [Deutsche Version](README.de.md)
30
+
31
+ **fmn** is a command-line tool for building and maintaining structured [Obsidian](https://obsidian.md) vaults with LLM assistance.
32
+
33
+ Use it for anything you want to develop as structured, connected knowledge: business planning, research, civic data projects, hobby projects, home renovation. You describe what you want in plain English — fmn handles the context, the LLM call, and the note writing.
34
+
35
+ > *The LLM doesn't write the knowledge. It writes the YAML. The knowledge comes from you.*
36
+
37
+ Works with any consistently structured Obsidian vault. The [OpenMash vault](https://codeberg.org/DenvaDude/openmash) is one example — a civic open data toolkit built with fmn.
38
+
39
+ ---
40
+
41
+ ## How it works
42
+
43
+ ```
44
+ Your vault → fmn pack → context snapshot
45
+ context snapshot + your request → fmn generate → input/notes.yaml
46
+ review input/notes.yaml → fmn write → new notes in your vault
47
+ ```
48
+
49
+ Or all at once:
50
+
51
+ ```bash
52
+ fmn run "Add 3 use cases for air quality monitoring" --provider anthropic
53
+ ```
54
+
55
+ The LLM never writes directly to your vault. `fmn generate` produces an intermediate `input/notes.yaml` that you review before `fmn write` touches anything.
56
+
57
+ ---
58
+
59
+ ## Who is this for?
60
+
61
+ - **Anyone** who maintains a structured Obsidian vault and wants LLM help expanding it
62
+ - **Civic technologists and researchers** building open data knowledge bases
63
+ - **NGOs and community groups** mapping datasets, user groups, or use cases
64
+ - **Developers** who want a scriptable vault generation pipeline
65
+
66
+ You do not need to be a programmer. If you can run a terminal command, you can use fmn.
67
+
68
+ ---
69
+
70
+ ## Installation
71
+
72
+ ```bash
73
+ pipx install forge-me-notes
74
+ ```
75
+
76
+ > No `pipx`? Run `pip install pipx && pipx ensurepath` first, or see [pipx.pypa.io](https://pipx.pypa.io).
77
+ > Alternatively: `pip install forge-me-notes`
78
+
79
+ Set your vault path:
80
+
81
+ ```bash
82
+ export VAULT_PATH=/path/to/your/vault
83
+ # or pass it per command:
84
+ fmn --vault /path/to/your/vault pack
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Quick start
90
+
91
+ ```bash
92
+ fmn pack # snapshot your vault
93
+ fmn generate "Add 3 notes about Nordic city cycling policy" # LLM → input/notes.yaml
94
+ fmn write # review passed → write notes
95
+
96
+ # Or all at once:
97
+ fmn run "Add 3 notes about Nordic city cycling policy" --provider anthropic
98
+
99
+ # Check vault health:
100
+ fmn audit
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Commands
106
+
107
+ | Command | What it does |
108
+ |--------|--------------|
109
+ | `fmn pack` | Scans your vault → exports context snapshot to `context/` |
110
+ | `fmn write` | Reads `input/notes.yaml` → writes notes into the vault |
111
+ | `fmn generate "request"` | Context + request → LLM → produces `input/notes.yaml` |
112
+ | `fmn run "request"` | Pack + generate + confirm + write in one step |
113
+ | `fmn audit` | Checks vault health: broken links, orphans, missing properties |
114
+
115
+ ---
116
+
117
+ ## LLM providers
118
+
119
+ No API key? Use `--provider manual` — fmn prints the full prompt and you paste it into any chat interface yourself.
120
+
121
+ | Provider | Flag | Requires |
122
+ |----------|------|----------|
123
+ | Anthropic (Claude) | `--provider anthropic` | `ANTHROPIC_API_KEY` |
124
+ | OpenAI (GPT-4o) | `--provider openai` | `OPENAI_API_KEY` |
125
+ | Ollama (local) | `--provider ollama` | [Ollama](https://ollama.com) running locally — free |
126
+ | Manual (any chat UI) | `--provider manual` | Nothing |
127
+
128
+ ---
129
+
130
+ ## Command reference
131
+
132
+ ### `fmn pack`
133
+ ```bash
134
+ fmn pack # snapshot index + metadata
135
+ fmn pack --notes # also include full note bodies
136
+ ```
137
+
138
+ ### `fmn generate "request"`
139
+ ```bash
140
+ fmn generate "Add a user group note for Roma communities" --provider ollama --model mistral
141
+ fmn generate "Add 3 inspiration notes about Nordic cities" --provider manual
142
+ ```
143
+
144
+ ### `fmn write`
145
+ ```bash
146
+ fmn write # write notes from input/notes.yaml
147
+ fmn write --force # overwrite existing notes
148
+ ```
149
+
150
+ ### `fmn run "request"`
151
+ ```bash
152
+ fmn run "Update all use cases to reference my new Vienna datasets" --force
153
+ ```
154
+
155
+ ### `fmn audit`
156
+ ```bash
157
+ fmn audit # summary (capped at 5 per category)
158
+ fmn audit --verbose # show all issues
159
+ fmn audit --fix # auto-repair broken links with near-matches
160
+ fmn audit --report # save report as a timestamped vault note
161
+ fmn audit --trend # show audit history from .fmn/history.yaml
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Project structure
167
+
168
+ ```
169
+ forge-me-notes/
170
+ ├── fmn/
171
+ │ ├── cli.py # entry point
172
+ │ ├── pack.py # vault scanner
173
+ │ ├── generate.py # LLM interface
174
+ │ ├── write.py # note writer
175
+ │ ├── audit.py # vault health checker
176
+ │ └── run.py # orchestrator
177
+ ├── input/notes.yaml # generated note specs — review before fmn write
178
+ ├── context/all.md # vault context snapshot
179
+ ├── prompts/system_prompt.md
180
+ └── tests/
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Example vault: OpenMash
186
+
187
+ [OpenMash](https://codeberg.org/DenvaDude/openmash) is a civic open data toolkit built with fmn — a structured Obsidian vault for mapping datasets, user groups, barriers, and use cases for any city. It ships with a Karlsruhe example and a full workshop facilitation kit.
188
+
189
+ ```bash
190
+ git clone https://codeberg.org/DenvaDude/openmash
191
+ cd openmash/openmash-vault
192
+ export VAULT_PATH=$(pwd)
193
+ fmn audit
194
+ fmn run "Add 3 use cases for cycling infrastructure" --provider anthropic
195
+ ```
196
+
197
+ ---
198
+
199
+ ## Contributing
200
+
201
+ See [CONTRIBUTING.md](CONTRIBUTING.md). See [DECISIONS.md](DECISIONS.md) for the reasoning behind key design choices.
202
+
203
+ ---
204
+
205
+ ## Changelog
206
+
207
+ See [CHANGELOG.md](CHANGELOG.md).
208
+
209
+ ---
210
+
211
+ ## License
212
+
213
+ MIT © 2026 OpenMash contributors
@@ -0,0 +1,187 @@
1
+ # forge-me-notes
2
+
3
+ > 🇩🇪 [Deutsche Version](README.de.md)
4
+
5
+ **fmn** is a command-line tool for building and maintaining structured [Obsidian](https://obsidian.md) vaults with LLM assistance.
6
+
7
+ Use it for anything you want to develop as structured, connected knowledge: business planning, research, civic data projects, hobby projects, home renovation. You describe what you want in plain English — fmn handles the context, the LLM call, and the note writing.
8
+
9
+ > *The LLM doesn't write the knowledge. It writes the YAML. The knowledge comes from you.*
10
+
11
+ Works with any consistently structured Obsidian vault. The [OpenMash vault](https://codeberg.org/DenvaDude/openmash) is one example — a civic open data toolkit built with fmn.
12
+
13
+ ---
14
+
15
+ ## How it works
16
+
17
+ ```
18
+ Your vault → fmn pack → context snapshot
19
+ context snapshot + your request → fmn generate → input/notes.yaml
20
+ review input/notes.yaml → fmn write → new notes in your vault
21
+ ```
22
+
23
+ Or all at once:
24
+
25
+ ```bash
26
+ fmn run "Add 3 use cases for air quality monitoring" --provider anthropic
27
+ ```
28
+
29
+ The LLM never writes directly to your vault. `fmn generate` produces an intermediate `input/notes.yaml` that you review before `fmn write` touches anything.
30
+
31
+ ---
32
+
33
+ ## Who is this for?
34
+
35
+ - **Anyone** who maintains a structured Obsidian vault and wants LLM help expanding it
36
+ - **Civic technologists and researchers** building open data knowledge bases
37
+ - **NGOs and community groups** mapping datasets, user groups, or use cases
38
+ - **Developers** who want a scriptable vault generation pipeline
39
+
40
+ You do not need to be a programmer. If you can run a terminal command, you can use fmn.
41
+
42
+ ---
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ pipx install forge-me-notes
48
+ ```
49
+
50
+ > No `pipx`? Run `pip install pipx && pipx ensurepath` first, or see [pipx.pypa.io](https://pipx.pypa.io).
51
+ > Alternatively: `pip install forge-me-notes`
52
+
53
+ Set your vault path:
54
+
55
+ ```bash
56
+ export VAULT_PATH=/path/to/your/vault
57
+ # or pass it per command:
58
+ fmn --vault /path/to/your/vault pack
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Quick start
64
+
65
+ ```bash
66
+ fmn pack # snapshot your vault
67
+ fmn generate "Add 3 notes about Nordic city cycling policy" # LLM → input/notes.yaml
68
+ fmn write # review passed → write notes
69
+
70
+ # Or all at once:
71
+ fmn run "Add 3 notes about Nordic city cycling policy" --provider anthropic
72
+
73
+ # Check vault health:
74
+ fmn audit
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Commands
80
+
81
+ | Command | What it does |
82
+ |--------|--------------|
83
+ | `fmn pack` | Scans your vault → exports context snapshot to `context/` |
84
+ | `fmn write` | Reads `input/notes.yaml` → writes notes into the vault |
85
+ | `fmn generate "request"` | Context + request → LLM → produces `input/notes.yaml` |
86
+ | `fmn run "request"` | Pack + generate + confirm + write in one step |
87
+ | `fmn audit` | Checks vault health: broken links, orphans, missing properties |
88
+
89
+ ---
90
+
91
+ ## LLM providers
92
+
93
+ No API key? Use `--provider manual` — fmn prints the full prompt and you paste it into any chat interface yourself.
94
+
95
+ | Provider | Flag | Requires |
96
+ |----------|------|----------|
97
+ | Anthropic (Claude) | `--provider anthropic` | `ANTHROPIC_API_KEY` |
98
+ | OpenAI (GPT-4o) | `--provider openai` | `OPENAI_API_KEY` |
99
+ | Ollama (local) | `--provider ollama` | [Ollama](https://ollama.com) running locally — free |
100
+ | Manual (any chat UI) | `--provider manual` | Nothing |
101
+
102
+ ---
103
+
104
+ ## Command reference
105
+
106
+ ### `fmn pack`
107
+ ```bash
108
+ fmn pack # snapshot index + metadata
109
+ fmn pack --notes # also include full note bodies
110
+ ```
111
+
112
+ ### `fmn generate "request"`
113
+ ```bash
114
+ fmn generate "Add a user group note for Roma communities" --provider ollama --model mistral
115
+ fmn generate "Add 3 inspiration notes about Nordic cities" --provider manual
116
+ ```
117
+
118
+ ### `fmn write`
119
+ ```bash
120
+ fmn write # write notes from input/notes.yaml
121
+ fmn write --force # overwrite existing notes
122
+ ```
123
+
124
+ ### `fmn run "request"`
125
+ ```bash
126
+ fmn run "Update all use cases to reference my new Vienna datasets" --force
127
+ ```
128
+
129
+ ### `fmn audit`
130
+ ```bash
131
+ fmn audit # summary (capped at 5 per category)
132
+ fmn audit --verbose # show all issues
133
+ fmn audit --fix # auto-repair broken links with near-matches
134
+ fmn audit --report # save report as a timestamped vault note
135
+ fmn audit --trend # show audit history from .fmn/history.yaml
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Project structure
141
+
142
+ ```
143
+ forge-me-notes/
144
+ ├── fmn/
145
+ │ ├── cli.py # entry point
146
+ │ ├── pack.py # vault scanner
147
+ │ ├── generate.py # LLM interface
148
+ │ ├── write.py # note writer
149
+ │ ├── audit.py # vault health checker
150
+ │ └── run.py # orchestrator
151
+ ├── input/notes.yaml # generated note specs — review before fmn write
152
+ ├── context/all.md # vault context snapshot
153
+ ├── prompts/system_prompt.md
154
+ └── tests/
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Example vault: OpenMash
160
+
161
+ [OpenMash](https://codeberg.org/DenvaDude/openmash) is a civic open data toolkit built with fmn — a structured Obsidian vault for mapping datasets, user groups, barriers, and use cases for any city. It ships with a Karlsruhe example and a full workshop facilitation kit.
162
+
163
+ ```bash
164
+ git clone https://codeberg.org/DenvaDude/openmash
165
+ cd openmash/openmash-vault
166
+ export VAULT_PATH=$(pwd)
167
+ fmn audit
168
+ fmn run "Add 3 use cases for cycling infrastructure" --provider anthropic
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Contributing
174
+
175
+ See [CONTRIBUTING.md](CONTRIBUTING.md). See [DECISIONS.md](DECISIONS.md) for the reasoning behind key design choices.
176
+
177
+ ---
178
+
179
+ ## Changelog
180
+
181
+ See [CHANGELOG.md](CHANGELOG.md).
182
+
183
+ ---
184
+
185
+ ## License
186
+
187
+ MIT © 2026 OpenMash contributors
@@ -0,0 +1,2 @@
1
+ """forge-me-notes — fmn package"""
2
+ __version__ = "0.1.0"