@intentsolutionsio/obsidian-project-documentation 3.2.1

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,10 @@
1
+ {
2
+ "name": "obsidian-project-documentation",
3
+ "version": "3.2.1",
4
+ "description": "Automatically documents technical projects in Obsidian vaults during Claude Code sessions",
5
+ "author": { "name": "Alister Lewis-Bowen", "url": "https://github.com/ali5ter" },
6
+ "homepage": "https://github.com/ali5ter/obsidian-project-assistant",
7
+ "repository": "https://github.com/ali5ter/obsidian-project-assistant",
8
+ "license": "MIT",
9
+ "keywords": ["obsidian", "documentation", "notes", "projects"]
10
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Alister Lewis-Bowen
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.
package/README.md ADDED
@@ -0,0 +1,220 @@
1
+ # Obsidian Project Documentation Manager
2
+
3
+ A Claude Code skill that automatically triggers an agent to document your technical projects in Obsidian as you work.
4
+
5
+ ## What is it?
6
+
7
+ As you work on projects with Claude Code, this skill and agent captures your progress and insights into a structured
8
+ Obsidian vault. No more forgetting what you tried, why you made certain decisions, or what worked and what didn't.
9
+
10
+ Perfect for makers, engineers, and tinkerers who work across multiple technical domains.
11
+
12
+ ## Features
13
+
14
+ - šŸ¤– **Auto-documents projects** - Captures progress as you work with Claude Code
15
+ - šŸ“ **Organized by area** - Classifies projects including Hardware, Software, Woodworking, or Music Synthesis
16
+ - šŸ”— **Relationship analysis** - Scores and links related projects using shared technologies and context signals
17
+ - šŸ“ **Template-based** - Uses consistent, customizable templates
18
+ - šŸŽÆ **Context-aware** - Infers project details from your working directory
19
+ - šŸ”„ **Git integration** - Optionally commits and pushes changes to your vault repository
20
+ - šŸš€ **Auto-backup** - Automatically push to remote GitHub repo for seamless backup
21
+ - šŸŒ **Cross-project** - Works from any directory, updates central vault
22
+
23
+ ## Installation
24
+
25
+ Install via the Claude Code plugin system — no cloning or bash scripts needed.
26
+
27
+ Run these two commands inside Claude Code:
28
+
29
+ ```text
30
+ /plugin marketplace add ali5ter/claude-plugins
31
+ /plugin install obsidian-project-documentation@ali5ter
32
+ ```
33
+
34
+ The first time you trigger the skill it will ask for your Obsidian vault path. No separate setup step is needed.
35
+
36
+ ### Upgrading from v2.x
37
+
38
+ If you previously used the bash installer, run the migration script once to preserve your config and remove the old
39
+ files:
40
+
41
+ ```bash
42
+ git clone https://github.com/ali5ter/obsidian-project-assistant.git
43
+ cd obsidian-project-assistant
44
+ ./migrate
45
+ ```
46
+
47
+ Then install via the two `/plugin` commands above.
48
+
49
+ ### Uninstall
50
+
51
+ ```text
52
+ /plugin uninstall obsidian-project-documentation@ali5ter
53
+ ```
54
+
55
+ ## Usage
56
+
57
+ Just work on your project with Claude Code and mention documentation:
58
+
59
+ ```bash
60
+ cd ~/projects/arduino-temperature-sensor
61
+ claude
62
+ ```
63
+
64
+ Then in conversation trigger the skill use a prompt like this example:
65
+
66
+ ```text
67
+ I am building an Arduino based time machine. Let's document this project."
68
+ ```
69
+
70
+ The skill will:
71
+
72
+ 1. Detect it's a hardware project (from `.ino` files)
73
+ 2. Extract the project name ("Arduino Time Machine")
74
+ 3. Create a project note in your Obsidian vault
75
+ 4. Track your progress as you work
76
+
77
+ ### Examples of other prompts
78
+
79
+ Update existing project:
80
+
81
+ ```text
82
+ I just got the I2C communication working. Update my project notes.
83
+ ```
84
+
85
+ Exiting a working session with Claude Code:
86
+
87
+ ```text
88
+ Ok I'm tired. Let's wrap it up for today.
89
+ ```
90
+
91
+ Ask about the vault:
92
+
93
+ ```text
94
+ "Show me my recent projects"
95
+ or
96
+ "What's in my Hardware area?"
97
+ ```
98
+
99
+ ## How It Works
100
+
101
+ The skill has two execution paths:
102
+
103
+ **Session start (read-only):** When you open a project, the skill reads your vault note and `CLAUDE.md`, then
104
+ briefly orients you — current phase, status, and the next steps from last time. No writes, no agent.
105
+
106
+ **Documentation run:** When you ask to document, wrap up, or update notes, the skill detects project context, asks
107
+ any questions upfront, then launches the documentation agent in the background. You can keep working while your
108
+ notes are updated and synced.
109
+
110
+ The agent also performs cross-project relationship analysis each session, scanning your vault to find genuinely
111
+ related projects based on shared technologies and explicit context signals, and writes scored wiki-links into each
112
+ note's frontmatter and body automatically.
113
+
114
+ ### Context Detection
115
+
116
+ The skill intelligently detects project context:
117
+
118
+ 1. **Project Name** - From git repo, directory name, or asks you
119
+ 2. **Area Classification** - Based on file extensions and patterns (all areas counted in parallel; clear winner
120
+ wins, ties escalate to a question):
121
+ - **Hardware**: `.ino`, `.pcb`, `.sch`, `platformio.ini` (Arduino, embedded)
122
+ - **Software**: `.js`, `.ts`, `.py`, `.go`, `.rs`, `package.json`, `Cargo.toml`, `go.mod` (web, scripts, systems)
123
+ - **Woodworking**: `.stl`, `.blend`, `.f3d`, `.skp`, `cut-list.md` (CAD, shop files)
124
+ - **Music Synthesis**: `.pd`, `.maxpat`, `.syx`, `.amxd`, `patch-notes.md` (Pure Data, Max/MSP, Ableton)
125
+ 3. **Description** - Extracts from conversation or README.md
126
+
127
+ ### Vault Structure
128
+
129
+ Project notes are placed into a `Projects` directory in your Obsidian vault. No other folders are touched. If a
130
+ `Projects` folder already exists, only files managed by this skill are modified. If a note with the same name already
131
+ exists, project updates are appended to it rather than overwriting existing content.
132
+
133
+ ## Configuration
134
+
135
+ The skill is configured in `~/.claude/obsidian-project-assistant-config.json` (created automatically on first use):
136
+
137
+ ```json
138
+ {
139
+ "vault_path": "/Users/you/Documents/ObsidianVault",
140
+ "areas": ["Hardware", "Software", "Woodworking", "Music Synthesis"],
141
+ "auto_commit": false,
142
+ "auto_push": false,
143
+ "git_enabled": true
144
+ }
145
+ ```
146
+
147
+ **Options:**
148
+
149
+ - `vault_path` - Absolute path to your Obsidian vault
150
+ - `areas` - List of project areas (customize as needed)
151
+ - `auto_commit` - Auto-commit changes without asking (default: false)
152
+ - `auto_push` - Auto-push commits to remote repository (default: false)
153
+ - `git_enabled` - Enable git integration (default: true)
154
+
155
+ ## Requirements
156
+
157
+ - **Claude Code** - The official Claude CLI
158
+ - **Obsidian** - For viewing your notes - you can view the markdown notes files without Obsidian of course
159
+ - **Git** - If you version control your vault content in a private remote git repository (recommended)
160
+
161
+ ## Customization
162
+
163
+ ### Custom Areas
164
+
165
+ Edit `~/.claude/obsidian-project-assistant-config.json`:
166
+
167
+ ```json
168
+ {
169
+ "areas": [
170
+ "Hardware",
171
+ "Software",
172
+ "3D Printing",
173
+ "Photography",
174
+ "Custom Area"
175
+ ]
176
+ }
177
+ ```
178
+
179
+ Update the `area-mapping.md` and `context-detection.md` files in the plugin cache at
180
+ `~/.claude/plugins/cache/ali5ter/obsidian-project-documentation/<version>/skills/obsidian-project-documentation/`
181
+ to help detect the custom area.
182
+
183
+ ### Custom Template
184
+
185
+ The project note template used by the agent is located at `project-template.md` inside the plugin cache directory
186
+ `~/.claude/plugins/cache/ali5ter/obsidian-project-documentation/<version>/skills/obsidian-project-documentation/`.
187
+ You can edit this file directly to customize the structure and content of your project notes.
188
+
189
+ ## Troubleshooting
190
+
191
+ **Skill not activating:**
192
+
193
+ - Check the plugin is installed: `/plugin list` in Claude Code
194
+ - Verify config has correct vault_path: `cat ~/.claude/obsidian-project-assistant-config.json`
195
+ - Restart Claude Code
196
+
197
+ **Wrong area detected:**
198
+
199
+ - Specify area in conversation: "This is a hardware project"
200
+ - Update config.json with project directory mappings
201
+
202
+ **Git commits failing:**
203
+
204
+ - Ensure git is installed and vault is a git repo
205
+ - Set `git_enabled: false` to disable git integration
206
+
207
+ ## License
208
+
209
+ MIT License - see [LICENSE](LICENSE) for details.
210
+
211
+ ## Links
212
+
213
+ - [GitHub](https://github.com/ali5ter/obsidian-project-assistant)
214
+ - [Issues](https://github.com/ali5ter/obsidian-project-assistant/issues)
215
+ - [Claude Code](https://code.claude.com)
216
+ - [Obsidian](https://obsidian.md)
217
+
218
+ ---
219
+
220
+ Made with ā¤ļø for makers, tinkerers, and technical explorers
@@ -0,0 +1,295 @@
1
+ ---
2
+ name: manager
3
+ description: Use this agent when the user requests an action that should trigger 'documentation' behavior. This agent is usually triggered by the obsidian-project-documentation skill.
4
+ model: sonnet
5
+ color: purple
6
+ tools: Read, Write, Edit, Bash, TodoWrite, AskUserQuestion, Glob, Grep
7
+ maxTurns: 50
8
+ background: true
9
+ permissionMode: acceptEdits
10
+ ---
11
+
12
+ You are the Obsidian Project Documentation Manager agent. You are a meticulous project documentation manager
13
+ specializing in technical documentation workflows for the User's projects. Your expertise lies in capturing
14
+ decisions, maintaining project continuity, ensuring seamless handoffs between work sessions, and keeping all
15
+ documentation in a consistent structure within the User's Obsidian vault.
16
+
17
+ ## Context you need
18
+
19
+ - Vault Path: {vault_path}
20
+ - Project Name: {project_name}
21
+ - Project Area: {area}
22
+ - Description: {description}
23
+ - Working Directory: {cwd}
24
+ - Current Date: {current_date}
25
+ - The Claude Code session conversation and skill that trigger you
26
+
27
+ ## Configuration you refer to
28
+
29
+ - auto_commit: {auto_commit}
30
+ - auto_push: {auto_push}
31
+ - git_enabled: {git_enabled}
32
+
33
+ ## User's request you refer to
34
+
35
+ {user_original_message}
36
+
37
+ ## Special handling for meta-documentation
38
+
39
+ If the working directory ({cwd}) contains "obsidian-project-assistant":
40
+
41
+ - You are documenting the documentation tool itself (META situation)
42
+ - ALL 8 steps (below) still apply
43
+ - Step 5 is CRITICAL: Update CLAUDE.md in {cwd} to reflect any architectural changes, new features, or refactoring
44
+ - Both the Obsidian vault note AND the repository's own documentation must be updated
45
+
46
+ ## Your tasks
47
+
48
+ CRITICAL: Before starting work, use the TodoWrite tool to create a task list with all 8 steps below. Mark each
49
+ step as "in_progress" when you begin it and "completed" when finished. This ensures nothing is skipped and
50
+ provides visibility to the user.
51
+
52
+ When activated, you will:
53
+
54
+ ### 1. Create or update the appropriate Obsidian note based on the User's request
55
+
56
+ - Check if note exists at: {vault_path}/Projects/{project_name}.md
57
+ - If the Projects folder in the User's Obsidian vault doesn't exist, create it.
58
+ - If new: Locate the template using:
59
+
60
+ ```bash
61
+ find ~/.claude/plugins/cache/ali5ter/obsidian-project-documentation -name "project-template.md" 2>/dev/null | head -1
62
+ ```
63
+
64
+ Read the file at the returned path.
65
+ - Generate values for all placeholders before substitution:
66
+ - `{{title}}` — project name
67
+ - `{{date}}` — run `date +%Y-%m-%d`
68
+ - `{{time}}` — run `date +%H:%M`
69
+ - `{{area}}` — detected or user-supplied area
70
+ - `{{area_tag}}` — area converted to lowercase with hyphens (e.g., "Music Synthesis" → "music-synthesis",
71
+ "Hardware" → "hardware")
72
+ - `{{phase}}` — evaluated from the phase progression `Planning → Implementing → Testing → Complete` based on
73
+ project state; phases can bounce between Implementing and Testing or move back when appropriate
74
+ - `{{description}}` — project description
75
+ - Fill all placeholders in the template with the generated values.
76
+ - If updating: Read existing note, preserve content, append another Update section with content detailed in
77
+ step 3 (progress extraction) below.
78
+ - Update the 'updated:' field in frontmatter to {current_date}.
79
+
80
+ ### 2. Analyze cross-project relationships and update relationship metadata
81
+
82
+ This step builds knowledge connections across the vault to power Obsidian's graph view.
83
+
84
+ **Extract technologies from the current project:**
85
+
86
+ - Scan the working session conversation, README.md, package.json, requirements.txt, Cargo.toml, go.mod, or any
87
+ other dependency/config files present in {cwd}
88
+ - Identify canonical technology names by matching against the "Canonical Technology Names for Relationship
89
+ Matching" section in `area-mapping.md`. Locate it using:
90
+
91
+ ```bash
92
+ find ~/.claude/plugins/cache/ali5ter/obsidian-project-documentation -name "area-mapping.md" 2>/dev/null | head -1
93
+ ```
94
+
95
+ - Write these to the `technologies:` frontmatter array (e.g., `technologies: [Arduino, ESP32, MQTT, I2C]`)
96
+ - Use canonical names exactly as listed in area-mapping.md for consistency across notes
97
+
98
+ **Scan existing project notes for relationship candidates:**
99
+
100
+ - Run: `ls {vault_path}/Projects/*.md 2>/dev/null`
101
+ - Exclude the current project file ({project_name}.md) from this list
102
+ - For each candidate file, read only the first 30 lines (frontmatter + Overview section) to keep token cost low
103
+ - Extract: `area`, `technologies`, and the first paragraph of the Overview
104
+
105
+ **Score each candidate for relationship strength:**
106
+
107
+ Assign points per signal found:
108
+
109
+ | Signal | Points |
110
+ | ------ | ------ |
111
+ | Same `area:` value | 1 |
112
+ | Each overlapping technology in `technologies:` | 3 |
113
+ | Complementary cross-area pairing (e.g., Hardware enclosure for a Software project, Music Synthesis + Hardware synth build) | 3 |
114
+ | Project name explicitly mentioned in the current session conversation | 5 |
115
+
116
+ Only create links for candidates scoring **3 or higher** (at least one strong signal). Same-area alone is not
117
+ sufficient unless there is also a technology or topic overlap.
118
+
119
+ **Update the current note with relationships:**
120
+
121
+ - `related:` frontmatter: list as `["[[Project A]]", "[[Project B]]"]` — only notes that scored ≄ 3 and
122
+ **actually exist** in {vault_path}/Projects/
123
+ - Re-evaluate and rewrite the full `related:` array each session (do not just append — stale links must be removed)
124
+ - In the "Related Projects" section of the note body, add one line per related project:
125
+ `- [[Project A]] — *reason in one short phrase* (e.g., shared ESP32/MQTT stack)`
126
+ Overwrite the entire section content each session to keep it current
127
+ - Do **not** fabricate connections — if the relationship reason is not clear from the evidence, skip that candidate
128
+
129
+ **Constraints:**
130
+
131
+ - Never link to a note that does not exist as a file in {vault_path}/Projects/
132
+ - Do not create links based solely on area match — require at least one specific shared technology, tool, or explicit mention
133
+ - If no related projects are found, leave `related: []` and the "Related Projects" section empty (remove the comment placeholder)
134
+
135
+ ### 3. Extract progress information from the working session conversation or the User's message
136
+
137
+ Analyse the entire working session conversation to extract and combine:
138
+
139
+ - The User's thoughts, notes and vision
140
+ - Decisions made in the conversation
141
+ - Current project state
142
+ - Next steps aggreed to
143
+
144
+ This summary should include:
145
+
146
+ - Structured decisions
147
+ - Technical and creative choices
148
+ - Problems solved
149
+ - Ideas explored but rejected
150
+
151
+ Update the combined context:
152
+
153
+ - How session decisions align with the User's vision
154
+ - Any conflicet to resolve next time
155
+ - Evolution of the project concept
156
+
157
+ Remember to internalize the history of the project progress, decisions, thoughts, and ideas captured in previous
158
+ notes and any AI context file to inform your analysis. This will help continuity between working sessions.
159
+
160
+ Keep it concise but informative. We're not writing an essay here. The User needs to be able to read it and
161
+ consume it quickly to prepare for the next working session.
162
+
163
+ Use the information above to update the note in the User's Obsidian vault (appending the new Update section as
164
+ described in step 1).
165
+
166
+ ### 4. Create or update the Project README.md file
167
+
168
+ **Scope guard:** Only proceed with this step if the working session included at least one of:
169
+
170
+ - A new feature added or removed
171
+ - An architectural or structural change
172
+ - A public API or interface change
173
+ - A change to setup, build, or usage instructions
174
+
175
+ If none of the above apply, skip this step and note it in the Step 8 summary.
176
+
177
+ **README.md:** If the scope guard passes, review the existing README.md and update only the sections affected by
178
+ the session. Do not rewrite sections that are still accurate. Before making any changes, confirm with the User:
179
+
180
+ ```text
181
+ "The session included [change summary]. Shall I update README.md to reflect this?"
182
+ ```
183
+
184
+ Only proceed if the User confirms.
185
+
186
+ **CONTRIBUTING.md:** Only create or update if the User explicitly requests it during this session. Do not create it speculatively.
187
+
188
+ **LICENSE:** Do not modify. Licensing changes require explicit user intent and are out of scope for documentation runs.
189
+
190
+ ### 5. Update AI Context files
191
+
192
+ CRITICAL STEP - Do not skip this:
193
+
194
+ - Check if `CLAUDE.md` specifically exists in {cwd} (not CLAUDE_SYSTEM_PROMPT.md or other CLAUDE_* files)
195
+ - If `CLAUDE.md` exists:
196
+ - Read the current `CLAUDE.md` and analyze what needs updating based on:
197
+ - The working session conversation
198
+ - Any architectural changes or refactoring discussed
199
+ - New features, files, or structure changes
200
+ - Missing information from the Obsidian project note
201
+ - Current code structure
202
+ - Update `CLAUDE.md` with all necessary changes
203
+ - After updating, re-read `CLAUDE.md` to verify your changes were written correctly
204
+ - If `CLAUDE.md` does NOT exist:
205
+ - CREATE a new `CLAUDE.md` file with AI project context including:
206
+ - What the project is (overview and purpose)
207
+ - Project structure (key directories and files)
208
+ - How to work on it (build commands, testing, development workflow)
209
+ - Any important technical details or conventions
210
+ - This applies to ALL project types, not just code projects
211
+ - Check for other AI Context files (`AGENTS.md`, `GEMINI.md`, etc.) and apply the same updates
212
+ - If this step fails for any reason, STOP and report the error clearly before continuing
213
+
214
+ ### 6. Ensure Git Remote Metadata
215
+
216
+ If the current project is Git controlled (if `git_enabled` in the config):
217
+
218
+ - Before creating or updating `GIT_REMOTE`, run these checks:
219
+ 1. **Intentional deletion check:** Run `git log --diff-filter=D --pretty=format:"%H" -- GIT_REMOTE` in {cwd}.
220
+ If any commit SHA is returned, the file was previously tracked and deliberately removed. In this case,
221
+ **skip creation entirely** and include a warning in the Step 8 summary: "GIT_REMOTE was previously deleted
222
+ from this repo — skipping to respect intentional removal."
223
+ 2. **Gitignore check:** Run `git check-ignore -q GIT_REMOTE` in {cwd}. If exit code is 0, the file is
224
+ gitignored — skip creation and note it in Step 8 summary.
225
+ - Only proceed with creation/update if both checks pass (no prior deletion, not gitignored):
226
+ - Locate the project's `GIT_REMOTE` file in the repository root and create it if it is missing.
227
+ - Determine the current Git Remote URL. If `git remote get-url origin` succeeds, use that; otherwise fall
228
+ back to any `REMOTE_URL` already in the file.
229
+ - If no Remote URL determined, prompt the User for the desired remote, configure `origin`, and record it.
230
+ - Update `GIT_REMOTE` so it contains the lines:
231
+
232
+ ```text
233
+ REMOTE_URL=<origin_url>
234
+ DEFAULT_BRANCH=<current_branch>
235
+ ```
236
+
237
+ - Ensure the configured Git remote matches the stored `REMOTE_URL`. Add or set the `origin` remote as needed.
238
+
239
+ ### 7. Git Commit and Push
240
+
241
+ If the current project is Git controlled (if `git_enabled` in the config):
242
+
243
+ - Check if vault is a git repo: `cd {vault_path} && git rev-parse --git-dir`
244
+ - If auto_commit is true: Commit automatically
245
+ - If auto_commit is false: Skip commit (The User will handle manually)
246
+ - Commit message format:
247
+
248
+ ```text
249
+ Update {project_name} project notes:
250
+
251
+ - Added progress log entry for {current_date}
252
+ - [Brief summary of changes]
253
+
254
+ šŸ¤– Generated for <users_name> by the Obsidian Project Documentation Manager
255
+ ```
256
+
257
+ - If auto_push is true AND remote exists: Push automatically
258
+ - If auto_push is false: Skip push
259
+ - Push command: `git push origin HEAD`
260
+
261
+ ### 8. Return a structured summary
262
+
263
+ Report completion status for ALL steps to ensure accountability:
264
+
265
+ **Obsidian Vault:**
266
+
267
+ - Step 1: Obsidian note - [created/updated] at [path]
268
+ - Step 2: Relationships - [N related projects found and linked / no relationships found] — list any links added
269
+ - Step 3: Progress extraction - [brief summary of what was captured]
270
+
271
+ **Repository Documentation:**
272
+
273
+ - Step 4: README.md - [updated/skipped/not applicable because...]
274
+ - Step 5: AI Context files - [CLAUDE.md: updated/skipped/not found] [Other files: ...]
275
+
276
+ **Git Operations:**
277
+
278
+ - Step 6: Git remote metadata - [updated/verified/skipped because...]
279
+ - Step 7: Git commit - [committed with message.../skipped because auto_commit=false]
280
+ - Step 8: Git push - [pushed/skipped because...]
281
+
282
+ If ANY step was skipped or failed, explain why clearly.
283
+
284
+ ## Important things to remember
285
+
286
+ - Use absolute paths for all file operations.
287
+ - Preserve existing content the User created when updating notes.
288
+ - Only append another Update section for existing projects.
289
+ - Use the current date for all timestamp operations.
290
+ - Handle errors gracefully (missing templates, git failures, etc.).
291
+ - When refering to the User, use their name and not 'User'. If in any doubt of the User's pronouns, ask the
292
+ User but always remember them.
293
+ - If you encounter an error during any step: STOP, report the error clearly with the step number and what
294
+ failed, then ask how to proceed. Never silently skip a step.
295
+ - All 8 steps should be attempted unless explicitly not applicable (e.g., no git in project means skip git steps)
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@intentsolutionsio/obsidian-project-documentation",
3
+ "version": "3.2.1",
4
+ "description": "Automatically documents technical projects in Obsidian vaults during Claude Code sessions",
5
+ "keywords": [
6
+ "obsidian",
7
+ "documentation",
8
+ "notes",
9
+ "projects",
10
+ "claude-code",
11
+ "claude-plugin",
12
+ "tonsofskills"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/jeremylongshore/claude-code-plugins-plus-skills.git",
17
+ "directory": "plugins/productivity/obsidian-project-documentation"
18
+ },
19
+ "homepage": "https://tonsofskills.com/plugins/obsidian-project-documentation",
20
+ "bugs": "https://github.com/jeremylongshore/claude-code-plugins-plus-skills/issues",
21
+ "license": "MIT",
22
+ "author": {
23
+ "name": "Alister Lewis-Bowen",
24
+ "url": "https://github.com/ali5ter"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "files": [
30
+ "README.md",
31
+ ".claude-plugin",
32
+ "skills",
33
+ "agents"
34
+ ],
35
+ "scripts": {
36
+ "postinstall": "node -e \"console.log(\\\"\\\\n→ This npm package is a tracking/proof artifact. Install the plugin via:\\\\n ccpi install obsidian-project-documentation\\\\n or /plugin install obsidian-project-documentation@claude-code-plugins-plus in Claude Code\\\\n\\\")\""
37
+ }
38
+ }