obsidian-dev-skills 1.0.3 → 1.0.5
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/README.md +30 -7
- package/obsidian-ops/references/sync-procedure.md +14 -3
- package/obsidian-ops/references/troubleshooting.md +1 -1
- package/obsidian-ops/references/versioning-releases.md +9 -1
- package/obsidian-ref/references/file-conventions.md +3 -3
- package/package.json +1 -1
- package/scripts/init.mjs +63 -0
- package/scripts/setup-local.ps1 +1 -1
package/README.md
CHANGED
|
@@ -12,19 +12,42 @@ obsidian-dev-skills/
|
|
|
12
12
|
└── obsidian-ref/ # Technical references
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Installation & Usage
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
This package can be used as a development dependency in your Obsidian project.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### 1. Install to your project
|
|
20
|
+
```bash
|
|
21
|
+
# Using pnpm (Recommended)
|
|
22
|
+
pnpm add -D obsidian-dev-skills
|
|
20
23
|
|
|
21
|
-
|
|
24
|
+
# Using npm
|
|
25
|
+
npm install --save-dev obsidian-dev-skills
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
# Using yarn
|
|
28
|
+
yarn add -D obsidian-dev-skills
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 2. Initialize localized skills
|
|
32
|
+
Run the initialization script to seed the `.agent/skills/` folder. This also creates a project-specific skill template if one is missing.
|
|
24
33
|
|
|
25
|
-
|
|
34
|
+
```bash
|
|
35
|
+
# Using pnpm (Standard entry point)
|
|
36
|
+
pnpm obsidian-dev-skills
|
|
26
37
|
|
|
27
|
-
|
|
38
|
+
# Using npx (Universal entry point)
|
|
39
|
+
npx obsidian-dev-skills
|
|
40
|
+
|
|
41
|
+
# Manual execution
|
|
42
|
+
node node_modules/obsidian-dev-skills/scripts/init.mjs
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 3. Sync AI Agents
|
|
46
|
+
Ensure `AGENTS.md` is aligned with the localized skills.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx openskills sync
|
|
50
|
+
```
|
|
28
51
|
|
|
29
52
|
## Skills Overview
|
|
30
53
|
|
|
@@ -61,9 +61,15 @@ if ($item.LinkType -eq "Junction" -or $item.LinkType -eq "SymbolicLink") {
|
|
|
61
61
|
```bash
|
|
62
62
|
# Check if a specific repo is a symlink
|
|
63
63
|
if [ -L .ref/obsidian-api ]; then
|
|
64
|
-
|
|
64
|
+
# Portable approach for macOS/BSD and Linux
|
|
65
|
+
if command -v realpath >/dev/null 2>&1; then
|
|
66
|
+
TARGET=$(realpath .ref/obsidian-api)
|
|
67
|
+
else
|
|
68
|
+
TARGET=$(readlink .ref/obsidian-api)
|
|
69
|
+
fi
|
|
70
|
+
echo "Symlink detected - target: $TARGET"
|
|
65
71
|
# Navigate to the actual target location
|
|
66
|
-
cd "$
|
|
72
|
+
cd "$TARGET"
|
|
67
73
|
else
|
|
68
74
|
echo "Regular directory - can use .ref/obsidian-api directly"
|
|
69
75
|
cd .ref/obsidian-api
|
|
@@ -97,7 +103,12 @@ cd eslint-plugin; git pull; cd ..
|
|
|
97
103
|
**macOS/Linux**:
|
|
98
104
|
```bash
|
|
99
105
|
# First, check where symlinks point (usually ../.ref/obsidian-dev)
|
|
100
|
-
|
|
106
|
+
if command -v realpath >/dev/null 2>&1; then
|
|
107
|
+
TARGET_REPO=$(realpath .ref/obsidian-api)
|
|
108
|
+
else
|
|
109
|
+
TARGET_REPO=$(readlink .ref/obsidian-api)
|
|
110
|
+
fi
|
|
111
|
+
TARGET=$(echo "$TARGET_REPO" | sed 's|/obsidian-api$||')
|
|
101
112
|
echo "Symlinks point to: $TARGET"
|
|
102
113
|
|
|
103
114
|
# Navigate to central location and update all repos
|
|
@@ -25,7 +25,7 @@ Update frequency: Update as common issues are identified
|
|
|
25
25
|
- Use `list_dir` with the project root to see hidden directories
|
|
26
26
|
- Use `glob_file_search` with pattern `.ref/**` to search recursively
|
|
27
27
|
- Try direct paths like `.ref/obsidian-api/README.md`
|
|
28
|
-
- See [
|
|
28
|
+
- See [sync-procedure.md](sync-procedure.md) for detailed search strategies
|
|
29
29
|
|
|
30
30
|
**For AI agents**: When user asks about `.ref`, actively search using multiple methods. Don't assume it doesn't exist if first search fails.
|
|
31
31
|
|
|
@@ -6,11 +6,19 @@ Update frequency: Check Obsidian Sample Theme repo for updates
|
|
|
6
6
|
|
|
7
7
|
# Versioning & releases
|
|
8
8
|
|
|
9
|
-
**Before releasing**: Use the comprehensive [release-readiness.md](release-readiness.md) checklist to verify your
|
|
9
|
+
**Before releasing**: Use the comprehensive [release-readiness.md](release-readiness.md) checklist to verify your project is ready for release.
|
|
10
10
|
|
|
11
11
|
- Bump `version` in `manifest.json` (SemVer).
|
|
12
12
|
- Create a GitHub release whose tag exactly matches `manifest.json`'s `version`. Do not use a leading `v`.
|
|
13
|
+
### Theme Releases
|
|
13
14
|
- Attach `manifest.json` and `theme.css` to the release as individual assets.
|
|
14
15
|
- After the initial release, follow the process to add/update your theme in the community catalog as required.
|
|
15
16
|
|
|
17
|
+
### Plugin Releases
|
|
18
|
+
- Attach `main.js`, `manifest.json`, and `styles.css` to the release as individual assets.
|
|
19
|
+
- Follow the plugin submission process to add/update your plugin in the community catalog.
|
|
20
|
+
|
|
21
|
+
> [!NOTE]
|
|
22
|
+
> Themes and plugins have different asset requirements and submission paths. Ensure you follow the correct flow for your project type.
|
|
23
|
+
|
|
16
24
|
|
|
@@ -12,7 +12,7 @@ Update frequency: Check Obsidian Sample Theme repo for updates
|
|
|
12
12
|
- **Complex theme with build tools** (for themes using SCSS, Grunt, etc.): `src/scss/` directory with SCSS source files that compile to `theme.css`
|
|
13
13
|
- **CRITICAL**: Never have both `theme.css` as source AND `src/scss/` - choose one pattern
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## Simple CSS Theme Structure
|
|
16
16
|
|
|
17
17
|
**Recommended for simple themes** (like the sample theme template):
|
|
18
18
|
```
|
|
@@ -25,7 +25,7 @@ package.json
|
|
|
25
25
|
- Changes take effect when Obsidian reloads the theme
|
|
26
26
|
- Perfect for learning and simple themes
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
## Complex Theme Structure (SCSS + Build Tools)
|
|
29
29
|
|
|
30
30
|
**For themes using SCSS, Grunt, npm scripts, or other build tools**:
|
|
31
31
|
```
|
|
@@ -47,7 +47,7 @@ package.json
|
|
|
47
47
|
- Run build command after making changes (see [build-workflow.md](build-workflow.md))
|
|
48
48
|
- **Example**: The `obsidian-oxygen` theme uses this pattern with Grunt
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
## Wrong Structure (Common Mistakes)
|
|
51
51
|
|
|
52
52
|
```
|
|
53
53
|
theme.css # ❌ DON'T have both
|
package/package.json
CHANGED
package/scripts/init.mjs
CHANGED
|
@@ -109,6 +109,66 @@ function detectProjectType(root) {
|
|
|
109
109
|
return isPlugin ? 'plugin' : 'theme';
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Ensures a project-specific skill exists, creating a template if it doesn't.
|
|
114
|
+
*/
|
|
115
|
+
function initializeProjectSkill(targetSkillsDir) {
|
|
116
|
+
const projectSkillDir = path.join(targetSkillsDir, 'project');
|
|
117
|
+
const projectSkillFile = path.join(projectSkillDir, 'SKILL.md');
|
|
118
|
+
|
|
119
|
+
if (!fs.existsSync(projectSkillFile)) {
|
|
120
|
+
console.log('📝 Initializing project-specific skill template...');
|
|
121
|
+
if (!fs.existsSync(projectSkillDir)) {
|
|
122
|
+
fs.mkdirSync(projectSkillDir, { recursive: true });
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const template = `---
|
|
126
|
+
name: project
|
|
127
|
+
description: Project-specific architecture, maintenance tasks, and unique conventions. Load when performing project-wide maintenance or working with the core architecture.
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
# Project Context
|
|
131
|
+
|
|
132
|
+
This skill provides the unique context and architectural details for this repository.
|
|
133
|
+
|
|
134
|
+
## Purpose
|
|
135
|
+
|
|
136
|
+
To provide guidance on project-specific structures and tasks that differ from general Obsidian development patterns.
|
|
137
|
+
|
|
138
|
+
## When to Use
|
|
139
|
+
|
|
140
|
+
Load this skill when:
|
|
141
|
+
- Understanding the repository's unique architecture.
|
|
142
|
+
- Performing recurring maintenance tasks.
|
|
143
|
+
- Following project-specific coding conventions.
|
|
144
|
+
|
|
145
|
+
## Project Overview
|
|
146
|
+
|
|
147
|
+
- **Architecture**: Organized structure with main code in \`src/main.ts\` and settings in \`src/settings.ts\`.
|
|
148
|
+
- **Reference Management**: Uses a \`.ref\` folder with symlinks to centralized Obsidian repositories for API and documentation.
|
|
149
|
+
|
|
150
|
+
## Core Architecture
|
|
151
|
+
|
|
152
|
+
- Detail the primary technical stack and how components interact.
|
|
153
|
+
|
|
154
|
+
## Project-Specific Conventions
|
|
155
|
+
|
|
156
|
+
- **Naming**: Describe any specific naming patterns used in this repo.
|
|
157
|
+
- **Patterns**: Document unique implementation patterns (e.g., custom hooks, specific state management).
|
|
158
|
+
|
|
159
|
+
## Key Files
|
|
160
|
+
|
|
161
|
+
- \`src/main.ts\`: [Description]
|
|
162
|
+
- \`manifest.json\`: [Description]
|
|
163
|
+
|
|
164
|
+
## Maintenance Tasks
|
|
165
|
+
|
|
166
|
+
- List recurring tasks like version bumping, CSS testing, or dependency updates.
|
|
167
|
+
`;
|
|
168
|
+
fs.writeFileSync(projectSkillFile, template, 'utf8');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
112
172
|
async function init() {
|
|
113
173
|
// Determine if we are running in the package's own directory (development)
|
|
114
174
|
const isDevelopment = projectRoot === packageRoot ||
|
|
@@ -155,6 +215,9 @@ async function init() {
|
|
|
155
215
|
}
|
|
156
216
|
}
|
|
157
217
|
|
|
218
|
+
// Ensure project-specific skill exists
|
|
219
|
+
initializeProjectSkill(skillsDir);
|
|
220
|
+
|
|
158
221
|
// Update or create sync-status.json
|
|
159
222
|
const syncStatusPath = path.join(agentDir, 'sync-status.json');
|
|
160
223
|
const today = new Date().toISOString().split('T')[0];
|
package/scripts/setup-local.ps1
CHANGED