docs-compile.sh:
- Add --language LANG parameter for per-language compilation
- Support language-specific source directories (docs/sl/, docs/en/, etc.)
- Create language subdirectories in output (docs-v0.8.2_24.mar.2026/sl/)
- Default behavior unchanged (compile docs/ root if no --language specified)
docs-sync.cron.sh:
- Add LANGUAGES="sl,en,de,fr,es" configuration (Slovenian primary)
- Loop through each language, call docs-compile.sh per language
- Compile all languages to version-dated language subdirectories
INTEGRATION.md (docs-deployment skill):
- Update examples to show Slovenian as primary language
- Document language configuration format
- Show per-language compilation workflow
- Update Crowdin sync diagrams (sl first, then others)
Rationale:
- Slovenian is prototype default locale/timezone (sl-SI/Europe/Ljubljana)
- Documentation language hierarchy should match system language default
- Crowdin will manage translations (sl as source, others as translations)
- Zero-downtime deployment now supports multiple language versions
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
---
Build: pass | Tests: FAIL — Tests 2 failed | 487 passed | 10 skipped (499)
Add comprehensive docs-deployment skill for host-level multi-language documentation:
SKILL.md:
- Complete skill definition and guide (600+ lines)
- Architecture overview and deployment flow
- Multi-language support (en, de, fr, es)
- Crowdin integration workflow
- Troubleshooting guide
- Quick reference for common tasks
- Performance metrics and capacity planning
Templates:
- nginx-vhost-template.conf: Production-ready multi-language routing
* Language-specific locations (/en/, /de/, /fr/, /es/)
* Zero-downtime symlink swaps
* SSL/TLS configuration
* Security headers and caching
- language-selector.html: Beautiful language picker UI
* Mobile-responsive design
* Supports 4 languages
* Links to Crowdin translation project
Date Format Fix (User-Facing):
- Change from YYYYMMDD (20260324) to DD.mon.YYYY (24.mar.2026)
- docs-compile.sh: Update date generation and validation
- docs-sync.cron.sh: Update to match compile.sh format
- All version directories now human-readable: docs-v0.9.0_24.mar.2026
This format is:
- User-friendly (appears in directory names, documentation)
- Consistent with Slovenian date preferences
- Easily sortable (day.month.year order)
- Clear in translated documentation
Skill enables operators and authors to:
- Understand the complete documentation deployment system
- Set up Crowdin projects from scratch
- Troubleshoot common issues
- Monitor deployment health
- Perform rollbacks and manual syncs
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
---
Build: pass | Tests: FAIL — Tests 2 failed | 487 passed | 10 skipped (499)
Implement Privacy-First Documentation strategy:
- Pre-commit hook scans staged files for credentials, IPs, usernames, domains
- Blocks commits containing: samob, smilepowered, 192.168.x.x, 10.x.x.x, password=, secret=, api_key=, token=, etc.
- Auto-generates .git/hooks/sensitive-patterns.txt and sensitive-allowlist.txt on first run
- Users can add false positives to allowlist without removing legitimate content
- Documented in scripts/hooks/SECURITY.md with customization and audit instructions
- Updated CONTRIBUTING.md with setup and troubleshooting steps
Enforcement: All contributors now have automatic sensitive data detection before push.
Benefits: Docs become safe to share publicly, prevents credential leaks, enables Privacy-First approach.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
---
Build: pass | Tests: pass — Tests 489 passed | 10 skipped (499)
Three scripts in scripts/memory/:
- common.sh: shared config, DB connection, dependency checks
- embed.sh: generate 1536d embeddings via OpenRouter API
- chunk.sh: split text on sentence boundaries (~500 chars)
- memory-pg.sh: full CLI for store/search/recent/important/count
Store pipeline: text → chunk → embed → insert (fully automated).
Search: hybrid RRF combining full-text and vector similarity.
All scripts use #!/usr/bin/env bash for FreeBSD compatibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(db): remove unique constraint on folder to support multi-channel agents
* ci: implement automated skill drift detection and self-healing PRs
* fix: align registration logic with Gavriel's feedback and fix build/test issues from Daniel Mi
* style: conform to prettier standards for CI validation
* test: fix branch naming inconsistency in CI (master vs main)
* fix(ci): robust module resolution by removing file extensions in scripts
* refactor(ci): simplify skill validation by removing redundant combination tests
* style: conform skills-engine to prettier, unify logging in index.ts and cleanup unused imports
* refactor: extract multi-channel DB changes to separate branch
Move channel column, folder suffix logic, and related migrations
to feat/multi-channel-db-v2 for independent review. This PR now
contains only CI/CD optimizations, Prettier formatting, and
logging improvements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Interactive skill that guides Claude through fetching upstream NanoClaw,
previewing changes, merging with customizations, running migrations, and
verifying the result. Includes:
- SKILL.md with 9-step update flow
- fetch-upstream.sh: detects remote, fetches, extracts tracked paths
- run-migrations.ts: discovers and runs version-ordered migrations
- post-update.ts: clears backup after conflict resolution
- update-core.ts: adds --json and --preview-only flags
- BASE_INCLUDES moved to constants.ts as single source of truth
- 16 new tests covering fetch, migrations, and CLI flags
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: multi-channel infrastructure with explicit channel/is_group tracking
- Add channels[] array and findChannel() routing in index.ts, replacing
hardcoded whatsapp.* calls with channel-agnostic callbacks
- Add channel TEXT and is_group INTEGER columns to chats table with
COALESCE upsert to protect existing values from null overwrites
- is_group defaults to 0 (safe: unknown chats excluded from groups)
- WhatsApp passes explicit channel='whatsapp' and isGroup to onChatMetadata
- getAvailableGroups filters on is_group instead of JID pattern matching
- findChannel logs warnings instead of silently dropping unroutable JIDs
- Migration backfills channel/is_group from JID patterns for existing DBs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: skills engine v0.1 — deterministic skill packages with rerere resolution
Three-way merge engine for applying skill packages on top of a core
codebase. Skills declare which files they add/modify, and the engine
uses git merge-file for conflict detection with git rerere for
automatic resolution of previously-seen conflicts.
Key components:
- apply: three-way merge with backup/rollback safety net
- replay: clean-slate replay for uninstall and rebase
- update: core version updates with deletion detection
- rebase: bake applied skills into base (one-way)
- manifest: validation with path traversal protection
- resolution-cache: pre-computed rerere resolutions
- structured: npm deps, env vars, docker-compose merging
- CI: per-skill test matrix with conflict detection
151 unit tests covering merge, rerere, backup, replay, uninstall,
update, rebase, structured ops, and edge cases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add Discord and Telegram skill packages
Skill packages for adding Discord and Telegram channels to NanoClaw.
Each package includes:
- Channel implementation (add/src/channels/)
- Three-way merge targets for index.ts, config.ts, routing.test.ts
- Intent docs explaining merge invariants
- Standalone integration tests
- manifest.yaml with dependency/conflict declarations
Applied via: npx tsx scripts/apply-skill.ts .claude/skills/add-discord
These are inert until applied — no runtime impact.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* remove unused docs (skills-system-status, implementation-guide)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>