@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.
- package/.claude-plugin/plugin.json +10 -0
- package/LICENSE +21 -0
- package/README.md +220 -0
- package/agents/manager.md +295 -0
- package/package.json +38 -0
- package/skills/obsidian-project-documentation/SKILL.md +245 -0
- package/skills/obsidian-project-documentation/area-mapping.md +267 -0
- package/skills/obsidian-project-documentation/context-detection.md +329 -0
- package/skills/obsidian-project-documentation/project-template.md +42 -0
|
@@ -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
|
+
}
|