docs: fix lint warnings and clean up references

- Fix MD060 table separator spacing across all docs
- Fix MD031/MD032 blank lines around code fences and lists
- Fix MD029 ordered list numbering in ecc-setup-guide
- Genericize hardcoded app names (LedGrab/MediaServer → YourApp)
- Remove non-existent `claude skill install` CLI command
- Add staleness warning for ECC Windows fixes
- Add cross-link from windows-code-signing to gitea-python-ci-cd
This commit is contained in:
2026-03-26 21:57:23 +03:00
parent 1ed06d54c4
commit 7d2b8c562d
4 changed files with 49 additions and 24 deletions
+1 -7
View File
@@ -27,13 +27,7 @@ Skills are a different extension mechanism from MCPs. They are prompt-based exte
Skills are distributed as `.skill` files (ZIP archives containing a `SKILL.md` and optional scripts). Skills are distributed as `.skill` files (ZIP archives containing a `SKILL.md` and optional scripts).
**Option 1 — CLI** (if `claude` command is available): **Manual extraction** (works everywhere, including VS Code extension):
```bash
claude skill install --scope user my-skill.skill
```
**Option 2 — Manual extraction** (works everywhere, including VS Code extension):
```bash ```bash
# Python one-liner # Python one-liner
+20 -3
View File
@@ -2,6 +2,8 @@
Step-by-step instructions for setting up ECC on a new machine. Can be followed manually or by Claude. Step-by-step instructions for setting up ECC on a new machine. Can be followed manually or by Claude.
> **Staleness warning:** The Windows-specific fixes (gotchas 68) were documented against ECC as of early 2026. These bugs may have been fixed upstream — check the [ECC repository](https://github.com/affaan-m/everything-claude-code) for recent changes before applying the workarounds.
## Prerequisites ## Prerequisites
- Node.js + npm installed - Node.js + npm installed
@@ -12,6 +14,7 @@ Step-by-step instructions for setting up ECC on a new machine. Can be followed m
## Step 1 — Clone and install ## Step 1 — Clone and install
**Windows (PowerShell):** **Windows (PowerShell):**
```powershell ```powershell
git clone https://github.com/affaan-m/everything-claude-code.git C:\Users\<USERNAME>\everything-claude-code git clone https://github.com/affaan-m/everything-claude-code.git C:\Users\<USERNAME>\everything-claude-code
cd C:\Users\<USERNAME>\everything-claude-code cd C:\Users\<USERNAME>\everything-claude-code
@@ -19,6 +22,7 @@ npm install
``` ```
**macOS/Linux (Bash):** **macOS/Linux (Bash):**
```bash ```bash
git clone https://github.com/affaan-m/everything-claude-code.git ~/everything-claude-code git clone https://github.com/affaan-m/everything-claude-code.git ~/everything-claude-code
cd ~/everything-claude-code cd ~/everything-claude-code
@@ -30,18 +34,21 @@ npm install
Run the installer **from inside the cloned repo**. Run the installer **from inside the cloned repo**.
**Windows (PowerShell):** **Windows (PowerShell):**
```powershell ```powershell
.\install.ps1 <languages> .\install.ps1 <languages>
# Example: .\install.ps1 python typescript # Example: .\install.ps1 python typescript
``` ```
**macOS/Linux (Bash):** **macOS/Linux (Bash):**
```bash ```bash
./install.sh <languages> ./install.sh <languages>
# Example: ./install.sh python typescript # Example: ./install.sh python typescript
``` ```
**Cross-platform (npm):** **Cross-platform (npm):**
```bash ```bash
npx ecc-install <languages> npx ecc-install <languages>
``` ```
@@ -67,14 +74,18 @@ All files go to `~/.claude/` (global, applies to all projects):
Some agents (planner, architect) ship with only `Read, Grep, Glob` tools. To enable `ast-index` and other CLI tools, add `Bash` to their tool lists. Some agents (planner, architect) ship with only `Read, Grep, Glob` tools. To enable `ast-index` and other CLI tools, add `Bash` to their tool lists.
Edit these files in `~/.claude/agents/`: Edit these files in `~/.claude/agents/`:
- `planner.md` - `planner.md`
- `architect.md` - `architect.md`
Change the frontmatter `tools` line from: Change the frontmatter `tools` line from:
```yaml ```yaml
tools: ["Read", "Grep", "Glob"] tools: ["Read", "Grep", "Glob"]
``` ```
To: To:
```yaml ```yaml
tools: ["Read", "Grep", "Glob", "Bash"] tools: ["Read", "Grep", "Glob", "Bash"]
``` ```
@@ -166,11 +177,11 @@ Run these commands inside Claude Code to verify:
The observe hook ships with three bugs that silently prevent all observations on Windows: The observe hook ships with three bugs that silently prevent all observations on Windows:
6. **`python3` is the Windows Store stub** — On Windows, `python3` resolves to the Microsoft Store redirect (`AppData/Local/Microsoft/WindowsApps/python3`) which returns exit code 49 instead of running Python. The hook's `resolve_python_cmd()` uses `command -v` which finds the stub. **Fix:** In both `~/.claude/skills/continuous-learning-v2/hooks/observe.sh` and `~/.claude/skills/continuous-learning-v2/scripts/detect-project.sh`, change `resolve_python_cmd()` to test execution (`"$candidate" -c "1"`) instead of just checking presence (`command -v`). 1. **`python3` is the Windows Store stub** — On Windows, `python3` resolves to the Microsoft Store redirect (`AppData/Local/Microsoft/WindowsApps/python3`) which returns exit code 49 instead of running Python. The hook's `resolve_python_cmd()` uses `command -v` which finds the stub. **Fix:** In both `~/.claude/skills/continuous-learning-v2/hooks/observe.sh` and `~/.claude/skills/continuous-learning-v2/scripts/detect-project.sh`, change `resolve_python_cmd()` to test execution (`"$candidate" -c "1"`) instead of just checking presence (`command -v`).
7. **`claude-vscode` entrypoint rejected** — The hook's Layer 1 filter only allows `cli` and `sdk-ts` entrypoints. VS Code extension sets `CLAUDE_CODE_ENTRYPOINT=claude-vscode`, so every observation is silently skipped. **Fix:** Add `claude-vscode` to the allowed entrypoints case pattern in `observe.sh`. 2. **`claude-vscode` entrypoint rejected** — The hook's Layer 1 filter only allows `cli` and `sdk-ts` entrypoints. VS Code extension sets `CLAUDE_CODE_ENTRYPOINT=claude-vscode`, so every observation is silently skipped. **Fix:** Add `claude-vscode` to the allowed entrypoints case pattern in `observe.sh`.
8. **Observer disabled by default**`~/.claude/skills/continuous-learning-v2/config.json` ships with `"enabled": false`. **Fix:** Set `"enabled": true`. 3. **Observer disabled by default**`~/.claude/skills/continuous-learning-v2/config.json` ships with `"enabled": false`. **Fix:** Set `"enabled": true`.
## Step 6 — Configure agent model tiers ## Step 6 — Configure agent model tiers
@@ -185,6 +196,7 @@ Edit the `model:` line in each agent's frontmatter in `~/.claude/agents/`:
| **haiku** | doc-updater | Lightweight docs work | | **haiku** | doc-updater | Lightweight docs work |
To bulk-update reviewers and thinking-heavy agents to opus: To bulk-update reviewers and thinking-heavy agents to opus:
```bash ```bash
# From bash/git bash: # From bash/git bash:
for f in ~/.claude/agents/{code,python,typescript,rust,go,java,kotlin,cpp,flutter,database,security}-reviewer.md ~/.claude/agents/tdd-guide.md; do for f in ~/.claude/agents/{code,python,typescript,rust,go,java,kotlin,cpp,flutter,database,security}-reviewer.md ~/.claude/agents/tdd-guide.md; do
@@ -201,6 +213,7 @@ The installer overwrites all files in `~/.claude/`, so updating is straightforwa
**1. Pull the latest version:** **1. Pull the latest version:**
**Windows (PowerShell):** **Windows (PowerShell):**
```powershell ```powershell
cd C:\Users\<USERNAME>\everything-claude-code cd C:\Users\<USERNAME>\everything-claude-code
git pull git pull
@@ -208,6 +221,7 @@ npm install
``` ```
**macOS/Linux (Bash):** **macOS/Linux (Bash):**
```bash ```bash
cd ~/everything-claude-code cd ~/everything-claude-code
git pull git pull
@@ -215,6 +229,7 @@ npm install
``` ```
**2. Back up your customizations:** **2. Back up your customizations:**
```bash ```bash
# Save agent model overrides # Save agent model overrides
grep -l 'model: opus' ~/.claude/agents/*.md > /tmp/ecc-opus-agents.txt grep -l 'model: opus' ~/.claude/agents/*.md > /tmp/ecc-opus-agents.txt
@@ -228,11 +243,13 @@ cp ~/.claude/skills/continuous-learning-v2/config.json /tmp/cl-config.json.bak
**3. Re-run the installer:** **3. Re-run the installer:**
**Windows (PowerShell):** **Windows (PowerShell):**
```powershell ```powershell
.\install.ps1 python typescript .\install.ps1 python typescript
``` ```
**macOS/Linux (Bash):** **macOS/Linux (Bash):**
```bash ```bash
./install.sh python typescript ./install.sh python typescript
``` ```
+6 -5
View File
@@ -636,6 +636,7 @@ git push origin v0.2.0-alpha.1
Instead of hardcoding release notes in the workflow, keep a `RELEASE_NOTES.md` in the repo root. The CI fetches only that file (via sparse-checkout for speed) and prepends its content to the auto-generated Downloads section. Instead of hardcoding release notes in the workflow, keep a `RELEASE_NOTES.md` in the repo root. The CI fetches only that file (via sparse-checkout for speed) and prepends its content to the auto-generated Downloads section.
**Workflow:** **Workflow:**
1. Before tagging, write `RELEASE_NOTES.md` with changes for this release 1. Before tagging, write `RELEASE_NOTES.md` with changes for this release
2. Commit, tag, push — CI picks up the file automatically 2. Commit, tag, push — CI picks up the file automatically
3. Release body = your notes + auto-generated download/Docker instructions 3. Release body = your notes + auto-generated download/Docker instructions
@@ -875,9 +876,9 @@ Can't replace files while the server is running (DLL locks). Solution: write a `
@echo off @echo off
timeout /t 5 /nobreak >nul timeout /t 5 /nobreak >nul
rmdir /s /q "C:\path\app" 2>nul rmdir /s /q "C:\path\app" 2>nul
move /y "C:\path\staging\LedGrab\app" "C:\path\app" move /y "C:\path\staging\YourApp\app" "C:\path\app"
rmdir /s /q "C:\path\python" 2>nul rmdir /s /q "C:\path\python" 2>nul
move /y "C:\path\staging\LedGrab\python" "C:\path\python" move /y "C:\path\staging\YourApp\python" "C:\path\python"
rmdir /s /q "C:\path\staging" 2>nul rmdir /s /q "C:\path\staging" 2>nul
start "" wscript.exe "C:\path\scripts\start-hidden.vbs" start "" wscript.exe "C:\path\scripts\start-hidden.vbs"
del /f /q "%~f0" del /f /q "%~f0"
@@ -892,8 +893,8 @@ Same pattern but with a shell script:
```bash ```bash
#!/bin/bash #!/bin/bash
sleep 3 sleep 3
rm -rf "$APP_ROOT/app" && mv "$STAGING/LedGrab/app" "$APP_ROOT/app" rm -rf "$APP_ROOT/app" && mv "$STAGING/YourApp/app" "$APP_ROOT/app"
rm -rf "$APP_ROOT/venv" && mv "$STAGING/LedGrab/venv" "$APP_ROOT/venv" rm -rf "$APP_ROOT/venv" && mv "$STAGING/YourApp/venv" "$APP_ROOT/venv"
rm -rf "$STAGING" rm -rf "$STAGING"
cd "$APP_ROOT" && exec ./run.sh cd "$APP_ROOT" && exec ./run.sh
``` ```
@@ -965,7 +966,7 @@ bash build-dist-windows.sh v1.0.0
# 3. Build NSIS installer # 3. Build NSIS installer
"/c/Program Files (x86)/NSIS/makensis.exe" -DVERSION="1.0.0" installer.nsi "/c/Program Files (x86)/NSIS/makensis.exe" -DVERSION="1.0.0" installer.nsi
# Output: build/MediaServer-v1.0.0-setup.exe # Output: build/YourApp-v1.0.0-setup.exe
``` ```
### 13.3. Common Issues ### 13.3. Common Issues
+13
View File
@@ -5,6 +5,7 @@ A review of code signing options for Windows executables (.exe installers), focu
## Why Sign? ## Why Sign?
Unsigned executables trigger: Unsigned executables trigger:
- **Chrome**: "This file isn't commonly downloaded and may be dangerous" - **Chrome**: "This file isn't commonly downloaded and may be dangerous"
- **SmartScreen**: "Windows protected your PC — Unknown publisher" - **SmartScreen**: "Windows protected your PC — Unknown publisher"
- **Edge**: Download blocked with "unverified" warning - **Edge**: Download blocked with "unverified" warning
@@ -18,6 +19,7 @@ These warnings significantly reduce user trust and installation rates.
**Cost:** ~$9.99/month (Basic tier) **Cost:** ~$9.99/month (Basic tier)
**Key advantages:** **Key advantages:**
- **Immediate SmartScreen trust** — Microsoft is the CA, so signed binaries are trusted from day one - **Immediate SmartScreen trust** — Microsoft is the CA, so signed binaries are trusted from day one
- Available to **individuals** — no business entity required - Available to **individuals** — no business entity required
- Identity verification via government ID + address (takes a few business days) - Identity verification via government ID + address (takes a few business days)
@@ -25,6 +27,7 @@ These warnings significantly reduce user trust and installation rates.
- Microsoft-backed trust chain - Microsoft-backed trust chain
**Setup:** **Setup:**
1. Create Azure account + subscription 1. Create Azure account + subscription
2. Provision "Trusted Signing" resource in Azure portal 2. Provision "Trusted Signing" resource in Azure portal
3. Complete identity verification (personal or organization) 3. Complete identity verification (personal or organization)
@@ -53,6 +56,7 @@ These warnings significantly reduce user trust and installation rates.
``` ```
**Required secrets:** **Required secrets:**
- `AZURE_KEY_VAULT_URL` — Trusted Signing account endpoint - `AZURE_KEY_VAULT_URL` — Trusted Signing account endpoint
- `AZURE_CERT_NAME` — Certificate profile name - `AZURE_CERT_NAME` — Certificate profile name
- `AZURE_CLIENT_ID` — Azure AD app registration client ID - `AZURE_CLIENT_ID` — Azure AD app registration client ID
@@ -60,6 +64,7 @@ These warnings significantly reduce user trust and installation rates.
- `AZURE_TENANT_ID` — Azure AD tenant ID - `AZURE_TENANT_ID` — Azure AD tenant ID
**Gotchas:** **Gotchas:**
- Identity verification can take a few business days - Identity verification can take a few business days
- Basic tier shows your verified personal name (not a custom organization name) - Basic tier shows your verified personal name (not a custom organization name)
- Relatively new service — documentation is still evolving - Relatively new service — documentation is still evolving
@@ -72,6 +77,7 @@ These warnings significantly reduce user trust and installation rates.
**Cost:** Free for qualifying open-source projects. **Cost:** Free for qualifying open-source projects.
**Requirements:** **Requirements:**
- OSI-approved license - OSI-approved license
- **Public repository on a major forge** (GitHub, GitLab) — self-hosted Gitea likely does not qualify - **Public repository on a major forge** (GitHub, GitLab) — self-hosted Gitea likely does not qualify
- Project must show community activity (stars, contributors, issues) - Project must show community activity (stars, contributors, issues)
@@ -90,6 +96,7 @@ These warnings significantly reduce user trust and installation rates.
**Cost:** OV ~$200-350/year, EV ~$350-500/year + eSigner cloud signing costs. **Cost:** OV ~$200-350/year, EV ~$350-500/year + eSigner cloud signing costs.
**Key facts:** **Key facts:**
- Free open-source program **discontinued** as of late 2024 - Free open-source program **discontinued** as of late 2024
- CA/Browser Forum rules (June 2023) require hardware token or cloud key storage — no PFX file downloads - CA/Browser Forum rules (June 2023) require hardware token or cloud key storage — no PFX file downloads
- eSigner cloud service has CLI tools and API, works with any CI - eSigner cloud service has CLI tools and API, works with any CI
@@ -104,6 +111,7 @@ These warnings significantly reduce user trust and installation rates.
**Cost:** ~$27-59/year for open-source OV code signing (cheapest legitimate option). **Cost:** ~$27-59/year for open-source OV code signing (cheapest legitimate option).
**Key facts:** **Key facts:**
- Requires hardware token (SimplySign cloud or physical card reader) - Requires hardware token (SimplySign cloud or physical card reader)
- SimplySign cloud option can work in CI with effort - SimplySign cloud option can work in CI with effort
- OV only — SmartScreen reputation must be built over time - OV only — SmartScreen reputation must be built over time
@@ -138,6 +146,7 @@ These warnings significantly reduce user trust and installation rates.
## Recommendation ## Recommendation
**Azure Trusted Signing** is the best option for personal open-source projects: **Azure Trusted Signing** is the best option for personal open-source projects:
- Affordable ($9.99/mo) - Affordable ($9.99/mo)
- Immediate SmartScreen trust - Immediate SmartScreen trust
- No business entity required - No business entity required
@@ -145,6 +154,10 @@ These warnings significantly reduce user trust and installation rates.
If budget is zero and the project is on public GitHub, try **SignPath.io** first. If budget is zero and the project is on public GitHub, try **SignPath.io** first.
## See Also
- [CI/CD for Python Apps on Gitea](gitea-python-ci-cd.md) — full pipeline reference including the signing step in context
## References ## References
- [Azure Trusted Signing documentation](https://learn.microsoft.com/en-us/azure/trusted-signing/) - [Azure Trusted Signing documentation](https://learn.microsoft.com/en-us/azure/trusted-signing/)