docs(rules): enforce User Content Sovereignty and remove specific content bias from guidelines and skills

This commit is contained in:
venus
2026-09-13 01:33:30 -05:00
parent 125b3e8839
commit 1079b956d3
4 changed files with 66 additions and 24 deletions
+5 -2
View File
@@ -1,13 +1,16 @@
---
name: eleventy-tiling-blog
description: >-
Use this skill when developing, refactoring, or building the River Rooks Eleventy blog, modularizing CSS into tokens and components, creating Nunjucks layouts and partials from sample designs, or configuring Eleventy build pipelines.
Use this skill when developing, refactoring, or building the Eleventy blog, modularizing CSS into tokens and components, creating Nunjucks layouts and partials from sample designs, or configuring Eleventy build pipelines.
---
# Eleventy Tiling Blog Development Skill
This skill guides the agent in modularizing templates and CSS from `sample-designs/` into a clean, DRY Eleventy (11ty) static publication site.
> [!IMPORTANT]
> **User Content Sovereignty:** Files in `sample-designs/` are layout and CSS references ONLY. Never extract or re-inject titles, service names, or text from `sample-designs/` over user-defined or sanitized content. User-authored text and naming conventions are the highest level of truth.
---
## 1. CSS Modularization Workflow
@@ -61,7 +64,7 @@ When extracting CSS from `sample-designs/*.html` into `src/assets/css/`:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }} | River Rooks</title>
<title>{{ title }} | {{ site.title or site.name }}</title>
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
+8 -5
View File
@@ -8,6 +8,9 @@ description: >-
This skill guides the agent in implementing the custom Obsidian plugin and server-side ingestion workflow for publishing blog posts directly from an Obsidian vault.
> [!IMPORTANT]
> **User Content Sovereignty:** User-authored content, post titles, tags, and formatting are the highest level of truth. The sync and normalization pipelines must preserve user-authored text verbatim and never overwrite or mutate user writing without explicit instruction.
---
## 1. System Architecture
@@ -39,8 +42,8 @@ This skill guides the agent in implementing the custom Obsidian plugin and serve
- **Request Body:**
```json
{
"slug": "reverse-engineering-iot-firmware",
"content": "---\ntitle: \"Reverse Engineering IoT Firmware\"\ndate: 2026-09-12\ntags: [\"#firmware\"]\n---\n\n## Content...",
"slug": "sample-post",
"content": "---\ntitle: \"Sample Post Title\"\ndate: 2026-09-12\ntags: [\"#tag1\"]\n---\n\n## Content...",
"assets": [
{
"filename": "diagram.png",
@@ -50,7 +53,7 @@ This skill guides the agent in implementing the custom Obsidian plugin and serve
}
```
- **Response:**
- `200 OK`: `{"status": "published", "path": "/posts/reverse-engineering-iot-firmware/"}`
- `200 OK`: `{"status": "published", "path": "/posts/sample-post/"}`
- `400 Bad Request`: `{"error": "Missing required frontmatter: title, date"}`
---
@@ -77,7 +80,7 @@ This skill guides the agent in implementing the custom Obsidian plugin and serve
## 4. Custom Obsidian Plugin Development
The Obsidian plugin runs inside Obsidian desktop/mobile and interacts with the Obsidian API:
1. Registers a ribbon icon (e.g. `send` or `terminal`) and a command: `Publish Current Note to River Rooks Blog`.
1. Registers a ribbon icon (e.g. `send` or `terminal`) and a command: `Publish Current Note to Blog`.
2. Reads the active file:
```typescript
const activeFile = this.app.workspace.getActiveFile();
@@ -88,7 +91,7 @@ The Obsidian plugin runs inside Obsidian desktop/mobile and interacts with the O
const cache = this.app.metadataCache.getFileCache(activeFile);
```
4. Sends the HTTP payload to the configured blog server URL with the Bearer token.
5. Displays an Obsidian `Notice('Published successfully to River Rooks Blog!')`.
5. Displays an Obsidian `Notice('Published successfully to Blog!')`.
---