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:
@@ -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
@@ -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 6–8) 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
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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/)
|
||||||
|
|||||||
Reference in New Issue
Block a user