Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
cc59259
feat: complete v0.1.0 — 10 skills, 4 scheduled agents, install.sh, do…
fidgetcoding Apr 17, 2026
20d5f5f
[bot:mogging-fix] fix install.sh idempotency + hook filename; skill f…
fidgetcoding Apr 17, 2026
b8ac8c1
[bot:mogging-scrub] v0.1.1 — PII scrub, P0/P1 fixes, docs complete
fidgetcoding Apr 17, 2026
ca6c890
[bot:mogging-scrub] remove auto-delete / silent-op phrasing from skil…
fidgetcoding Apr 17, 2026
3bcf62c
[bot:mogging-scrub] v0.1.2 — revert <person-i>/<person-c> substring c…
fidgetcoding Apr 17, 2026
3e7fa19
fix(ci): drop duplicate --fail flag from trufflehog extra_args
fidgetcoding Apr 17, 2026
12f644c
[bot:mogging-scrub] v0.1.3 — post-mogging contract sync across skills…
fidgetcoding Apr 17, 2026
588dc9e
[bot:mogging-install] v0.1.4 — install.sh now applies CLAUDE.md patch
fidgetcoding Apr 17, 2026
3744168
[bot:mogging-port] ship self-learning intelligence tier opt-in
fidgetcoding Apr 20, 2026
dbdf622
feat: README rewrite in voice + banner + /import-claude + /import-notes
fidgetcoding Apr 20, 2026
5801483
fix: proper Jens Heitmann attribution + finish Nathan→the operator sweep
fidgetcoding Apr 20, 2026
d42127a
fix: pattern-consolidator 'local' outside fn + full Credits links
fidgetcoding Apr 20, 2026
1a1dcea
docs(readme): drop IG link from Credits — keep only first-mention IG
fidgetcoding Apr 20, 2026
17c6487
docs(readme): drop fake 200/800 precision + accurately credit origina…
fidgetcoding Apr 20, 2026
c06e74a
docs(readme): trim origin-story closer — keep only the mogging line
fidgetcoding Apr 20, 2026
de33da6
docs(readme): 'mogged vault layout' → 'vault-mogging layout'
fidgetcoding Apr 20, 2026
9577383
fix: remove inaccurate ruvnet/claude-flow/ruflo attribution + patch p…
fidgetcoding Apr 20, 2026
66f8e15
fix(launchd): drop invalid '--headless --audit' flags from plist comm…
fidgetcoding Apr 20, 2026
589509b
docs(readme): add NicholasSpisak repo link in origin story + Credits
fidgetcoding Apr 20, 2026
d266c1b
feat(install): seed 7-folder vault from vault-template/ + add example…
fidgetcoding Apr 20, 2026
b3fe1ba
docs(readme): restore self-learning attribution to FidgetFlo (my fork…
fidgetcoding Apr 20, 2026
136f678
fix(audit): full 15-agent swarm fix pass — all 50+ findings resolved
fidgetcoding Apr 20, 2026
646d073
fix(launchd+intelligence): source nvm in plists + fix jq merge bug
fidgetcoding Apr 20, 2026
5f89b7d
feat(install): register obsidian-mcp with Claude Code pointed at vault
fidgetcoding Apr 20, 2026
6aa0802
feat(install): write ~/.claude/.mogging-vault marker for cli-maxxing …
fidgetcoding Apr 20, 2026
1c0c010
docs(changelog): capture 2026-04-20 install.sh shipped work
fidgetcoding Apr 21, 2026
23065a3
fix: surface prerequisites and actionable errors for first-time users
fidgetcoding Apr 22, 2026
6585900
ci: add test harness, shellcheck, and dependabot workflows
fidgetcoding Apr 22, 2026
85d784e
security(hooks): sanitize CLAUDE_SESSION_ID before marker path
fidgetcoding Apr 22, 2026
83b437c
security(helpers): harden learning-hooks.sh — set -uo pipefail + real…
fidgetcoding Apr 22, 2026
941507a
chore(shellcheck): clean SC2155/SC2015/SC2016/SC2317/SC2034 across he…
fidgetcoding Apr 22, 2026
c2b56b6
fix(install): clean-HOME dry-run exit-40, Linux osascript abort, vaul…
fidgetcoding Apr 22, 2026
66b86a4
test: update test_onboarding for 12-skill set + add test_obsidian_mcp…
fidgetcoding Apr 22, 2026
7f20c81
feat(install): add cbrain + cbraintg shell shortcuts (step 10.9)
fidgetcoding Apr 22, 2026
452946b
[bot:nudge] trigger contributors stats recompute
fidgetcoding Apr 25, 2026
89bdf1d
[bot:nudge] remove temporary cache-recompute marker
fidgetcoding Apr 25, 2026
10dfa6e
docs(readme): add social-links badge strip (X, LinkedIn, YouTube, Ins…
fidgetcoding Apr 25, 2026
c590a97
docs(changelog): refresh — backfill recent versions + 2026-04-25 hist…
fidgetcoding Apr 25, 2026
ddc2d6e
fix(install): <ORG-D> Apr-22 install-call bug fixes (items 2, 5, 6, 7…
fidgetcoding Apr 26, 2026
4725147
docs(changelog): backfill <ORG-D> Apr-22 install-call bug fixes (item…
fidgetcoding Apr 26, 2026
cdeef16
chore(security): add gitleaks pre-commit hook + .gitleaks.toml
fidgetcoding Apr 26, 2026
d6cfb7c
fix(ci): green up Tests + Lint Shell Scripts after <ORG-D> install-bu…
fidgetcoding Apr 26, 2026
3375cb6
[bot:mogging-fix] /save fast-path defaults — skip menu and Q&A on no-…
fidgetcoding May 2, 2026
c9250fc
docs: drop Notion claims (post-2026-05-04 cutover)
fidgetcoding May 4, 2026
a2d50f4
[bot:mogging-fix] finish post-Notion scrub of CLAUDE-MD-PATCH + skills
fidgetcoding May 4, 2026
bee8d06
[bot:mogging-fix] scrub stale Notion + W1/W2/W3 framing from wiki-sch…
fidgetcoding May 4, 2026
06864b0
[bot:mogging-fix] health.md: retune Gate C thresholds for 20-min orch…
fidgetcoding May 4, 2026
80b23d6
[bot:mogging-fix] /save: route project-tied to <PROJECT>/conversation…
fidgetcoding May 8, 2026
a8db9d1
[bot:mogging-restructure] phase 2 sweep: 05-Projects -> 01-Projects, …
fidgetcoding May 8, 2026
4a4dd9b
[bot:mogging-restructure] phase 2.1 — sweep cleanup: stale 05-Project…
fidgetcoding May 8, 2026
d48bdeb
fix: update stale 05-Projects refs to 01-Projects (post-2026-05-08 re…
fidgetcoding May 13, 2026
c75263d
Add [bot:daemon] to bot-prefix table
fidgetcoding May 21, 2026
b77149c
statusline badge → Brain²; save-skill vault slug example → ~/BRAIN2
fidgetcoding May 21, 2026
698694d
Add post-install setup/maintenance doc + vault-coach skill; fix Deskt…
fidgetcoding May 21, 2026
962b76e
Generalize onboarding doc + vault-coach to placeholders; add install …
fidgetcoding May 22, 2026
4c67346
Refine 03-Concepts wording (your own ideas, not jargon); fix Path A l…
fidgetcoding May 22, 2026
989d17d
fix(install): stale-hook repair used regex gsub on literal $HOME path…
fidgetcoding May 22, 2026
b9920ce
fix(docs): correct stale skill counts to 13 (README nav/prose, AGENTS…
fidgetcoding May 22, 2026
616c975
docs: add 'Keeping Claude-Memory lean' section to MAINTAINING-YOUR-BRAIN
fidgetcoding May 22, 2026
487053f
chore(gitignore): add key/cert ignore patterns (*.pem/*.key/*.cert/*.…
fidgetcoding May 22, 2026
d224aa9
Byline → the operator / <ORG-A> / fidgetcoding; install repair fix; d…
fidgetcoding May 22, 2026
793e3d1
CODEOWNERS @<ORG-A>→@fidgetcoding; NOTICE byline order canonical; REA…
fidgetcoding May 22, 2026
bcc1fab
[bot:mogging-fix] silence SC2088 on literal help-text tilde (install.…
fidgetcoding May 22, 2026
61bc8ac
fix: make Stop-hook idempotency guard checkout-path-independent
fidgetcoding Jun 12, 2026
6bac8e3
fix: doctor stale-wikilink check ignores code spans and fenced blocks
fidgetcoding Jun 12, 2026
7c859b7
fix: make doctor Linux-aware
fidgetcoding Jun 12, 2026
9ab7f5b
[bot:mogging-fix] update vendored-from comments to fidgetcoding/fidge…
fidgetcoding Jun 12, 2026
bc545a1
[bot:mogging-fix] bug-hunt sweep: jq Stop-merge primary path, pipefai…
fidgetcoding Jun 13, 2026
21d243d
[bot:mogging-fix] doctor: thread --vault from install, accept alt-clo…
fidgetcoding Jun 13, 2026
d2dfa9a
[bot:mogging-fix] scrub operator PII + fix v0.1.1 REMOVED artifacts
fidgetcoding Jun 25, 2026
29fdaa2
[bot:mogging-fix] autoresearch: pin run log to 04-Index/autoresearch-…
fidgetcoding Jul 3, 2026
e4d1b63
Add update.sh — marker-based one-liner updater (parity with maxxing r…
fidgetcoding Jul 20, 2026
da02780
fix(doctor): quote <ORG-A> scrub placeholder in case pattern
fidgetcoding Jul 20, 2026
8b36a24
[bot:mogging-fix] grant agents the tools their contracts already declare
fidgetcoding Jul 29, 2026
2793430
feat(install): add third-party vault skill packs at a pinned commit
fidgetcoding Aug 7, 2026
26d14b6
feat(install): add opt-in research tier (hyperresearch + graphify)
fidgetcoding Aug 7, 2026
5ed839f
docs(schema): define source_of_truth rules in the frontmatter contract
fidgetcoding Aug 7, 2026
6193f0d
docs: finish the placeholder scrub — 3 real names left behind
fidgetcoding Aug 17, 2026
1449dcc
docs: remove three testers' names from the changelog
fidgetcoding Aug 17, 2026
0d0c962
docs: replace the private vault name with a placeholder
fidgetcoding Aug 17, 2026
9f6fbc9
fix(ci): clear the two shellcheck warnings failing Lint Shell Scripts
fidgetcoding Aug 17, 2026
3eb7952
[bot:mogging-fix] health: Gate C thresholds for the 30-min merged orc…
fidgetcoding Sep 21, 2026
c5b2c67
[bot:mogging-fix] secret-scan: give gitleaks a token so a rate limit …
fidgetcoding Nov 1, 2026
f4ace9c
fix(tests): stop calling a run with skipped tests ALL GREEN
fidgetcoding Nov 1, 2026
8e25fb5
fix(tests): give the four skipped test files real tests
fidgetcoding Nov 1, 2026
79705ca
feat(memory): add the opt-in memory tier from PHILOSOPHY.md
fidgetcoding Nov 1, 2026
0226265
chore(license): name the copyright holder in LICENSE and NOTICE
fidgetcoding Nov 1, 2026
d9db3ad
Add the essence and evolution docs, and point agents at them
fidgetcoding Nov 1, 2026
1d1a420
Test: read the installer's real exit code in onboarding
fidgetcoding Nov 2, 2026
93bf114
chore(deps): bump trufflesecurity/trufflehog from 3.94.3 to 3.99.7
dependabot[bot] Nov 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"name": "2ndbrain-mogging",
"source": {
"source": "github",
"repo": "<ORG-A>/2ndBrain-mogging",
"repo": "fidgetcoding/2ndBrain-mogging",
"ref": "main"
},
"path": "."
Expand Down
10 changes: 5 additions & 5 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
{
"$schema": "https://claude.ai/schemas/plugin.json",
"name": "2ndbrain-mogging",
"version": "0.1.0",
"version": "0.1.4",
"description": "Obsidian vault automation for Claude Code. Save conversations, compile sources into a living wiki, audit the graph, challenge your own thinking. Amalgamation of Karpathy's LLM Wiki + Jens + eugeniu + AgriciDaniel + NicholasSpisak, hardened for operator vaults with live sync.",
"author": {
"name": "<ORG-A>",
"name": "fidgetcoding",
"email": "operator@example.com",
"url": "https://github.com/<ORG-A>"
"url": "https://github.com/fidgetcoding"
},
"license": "MIT",
"homepage": "https://github.com/<ORG-A>/2ndBrain-mogging",
"homepage": "https://github.com/fidgetcoding/2ndBrain-mogging",
"repository": {
"type": "git",
"url": "https://github.com/<ORG-A>/2ndBrain-mogging.git"
"url": "https://github.com/fidgetcoding/2ndBrain-mogging.git"
},
"engines": {
"claude-code": ">=1.4.0"
Expand Down
83 changes: 83 additions & 0 deletions .filter-repo-replacements.example.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# .filter-repo-replacements.example.txt
#
# Example / template for the real `.filter-repo-replacements.txt` file used by
# `git-filter-repo --replace-text` to scrub personal names and private
# project names from the repo's git history before going public.
#
# The real file is git-ignored (see .gitignore) and lives only on the
# operator's local machine. This example shows the format with fake names
# so you can build your own replacements file if you fork this pack.
#
# ---------------------------------------------------------------------------
# Format rules
# ---------------------------------------------------------------------------
#
# - Each line is OLD==>NEW (exact LITERAL string match — see warning below).
# - Comments start with `#`. Blank lines are ignored.
# - More specific patterns must come BEFORE shorter, more general ones
# or they'll be shadowed by the shorter pattern.
# - If a real name is a substring of a brand name you want to preserve
# (e.g. a first name that also appears inside a trademarked compound),
# add a self-preserving "Brand==>Brand" no-op line BEFORE the short
# pattern so the brand survives unchanged.
# - Placeholders on the right-hand side should be stable across all files
# and documented in docs/placeholder-names.md.
#
# ---------------------------------------------------------------------------
# WARNING — do NOT use `regex:\bNAME\b==><replacement>` rules
# ---------------------------------------------------------------------------
#
# v0.1.1 of this pack attempted word-boundary regex rules to scrub lowercase
# short names (e.g. `regex:\buri\b==><person-i>`). The `regex:` prefix was
# silently ignored by the installed git-filter-repo version, and the scrub
# degenerated into a literal substring replacement of `\buri\b`, which in
# turn mangled every English word containing `uri` (`security`, `during`,
# `heuristics`, `buried`, `configuring`, `gesturing`, etc.).
#
# Defensive rule: use ONLY literal matches in this file. For short names
# that coincide with English word fragments, rely on the capitalized form
# (`<PERSON-I>==><PERSON-I>`) and accept that lowercase standalone prose mentions
# will not be scrubbed. That is far safer than corrupting the codebase.
#
# ---------------------------------------------------------------------------
# Example entries (FAKE names — replace with your own)
# ---------------------------------------------------------------------------

# Full names first, so they match before the short forms below
ExampleFirstname ExampleLastname==><PERSON-X>
AnotherFirstname AnotherLastname==><PERSON-Y>

# Self-preserving brand rule (protects a brand that starts with a first name
# you're about to rewrite — e.g. if you're rewriting "Taylor" but want
# "Taylor-Made" to stay intact, put the brand rule BEFORE the short rule).
ExampleBrand-Compound==>ExampleBrand-Compound

# Short forms (first name only, last name only). These match anything the
# full-name line above didn't already catch.
ExampleFirstname==><PERSON-X>
ExampleLastname==><PERSON-X>
AnotherFirstname==><PERSON-Y>
AnotherLastname==><PERSON-Y>

# Private project / codename
ExampleProject==><PROJECT-X>
ExampleProject Codename==><PROJECT-X>

# ---------------------------------------------------------------------------
# Usage
# ---------------------------------------------------------------------------
#
# 1. Copy this file to `.filter-repo-replacements.txt` (git-ignored).
# 2. Replace the example entries with your real mappings.
# 3. Run:
#
# git filter-repo --replace-text .filter-repo-replacements.txt --force
#
# 4. Force-push:
#
# git push origin --force --all
# git push origin --force --tags
#
# 5. After the push succeeds, the real `.filter-repo-replacements.txt` can
# be deleted — the mapping should live only in your private
# `Claude-Memory/aliases.yaml`.
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# CODEOWNERS — every file requires review from @fidgetcoding.
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-sec<person-i>ty/customizing-your-repository/about-code-owners
* @fidgetcoding
8 changes: 8 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
labels:
- "dependencies"
82 changes: 82 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Lint Shell Scripts

# ----------------------------------------------------------------------------
# ShellCheck + bash -n gate for every shell script in the repo.
# Matches the pinned SHA convention used by cli-maxxing and creativity-maxxing.
#
# ShellCheck action is pinned to 00cae500 = ludeeus/action-shellcheck@v2.0.0
# because trilogy-group v2.0.0 and prior were moving tags. See
# `reference_action_shellcheck_pin` in the operator's memory for history.
# ----------------------------------------------------------------------------

on:
push:
branches: [main, 'ci/**']
paths-ignore:
- '**.md'
- 'docs/**'
- 'README*'
- 'NOTICE'
- 'LICENSE'
- 'why-not-*.md'
- '.github/CODEOWNERS'
pull_request:
branches: [main]
paths-ignore:
- '**.md'
- 'docs/**'
- 'README*'
- 'NOTICE'
- 'LICENSE'
- 'why-not-*.md'
- '.github/CODEOWNERS'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
shellcheck:
name: ShellCheck (warning severity)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # v2.0.0
with:
scandir: '.'
severity: warning
ignore_paths: node_modules tests/fixtures

syntax-check:
name: bash -n syntax check
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
persist-credentials: false
- name: Parse every shell script with bash -n
run: |
failed=0
while IFS= read -r -d '' f; do
if ! bash -n "$f" 2>&1; then
echo "::error file=$f::bash -n parse failed"
failed=1
fi
done < <(find . \
-type f -name "*.sh" \
-not -path "./.git/*" \
-not -path "./node_modules/*" \
-not -path "./tests/fixtures/*" \
-print0)
if [ "$failed" -ne 0 ]; then
exit 1
fi
echo "All shell scripts parsed cleanly"
91 changes: 91 additions & 0 deletions .github/workflows/secret-scan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: secret-scan

# ----------------------------------------------------------------------------
# Secret scanning gate for the public 2ndBrain-mogging repo.
#
# Runs on:
# - every push to main
# - every pull request targeting main
# - a daily cron (03:17 UTC) to catch newly-published detection patterns
#
# Two independent jobs run in parallel so a false-negative in one engine
# doesn't hide a real leak caught by the other:
# 1. gitleaks — custom ruleset in .gitleaks.toml (Morgen, n8n, PII)
# 2. trufflehog — verified-only, fail-closed (no unverified noise)
#
# Permissions are locked to contents:read. No write, no id-token.
# Each job has a 10-minute timeout.
# ----------------------------------------------------------------------------

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
# 03:17 UTC daily — off-peak, off-the-hour so we don't pile on GH runners
- cron: '17 3 * * *'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: secret-scan-${{ github.ref }}
cancel-in-progress: true

jobs:
gitleaks:
name: gitleaks (custom ruleset)
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository (full history)
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
# Full history required so gitleaks can scan every commit, not
# just the tip. Shallow clones miss historical leaks.
fetch-depth: 0
persist-credentials: false

- name: Run gitleaks with custom config
uses: gitleaks/gitleaks-action@ff98106e4c7b2bc287b24eaf42907196329070c7 # v2.3.9
env:
# The action looks up the repo owner to decide whether a license is
# needed. Without a token that lookup is anonymous, and when the
# runner's IP is rate limited it fails closed with "missing gitleaks
# license" before scanning anything. Pull requests refuse to scan
# without a token at all.
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Point the action at our pinned config. No GITLEAKS_LICENSE is set,
# which is intentional for an OSS repo under the free tier.
GITLEAKS_CONFIG: .gitleaks.toml
GITLEAKS_ENABLE_UPLOAD_ARTIFACT: "true"
GITLEAKS_ENABLE_SUMMARY: "true"

trufflehog:
name: trufflehog (verified-only)
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Checkout repository (full history)
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
persist-credentials: false

- name: Run trufflehog (filesystem mode)
# HIGH RISK historically ran as @main (moving HEAD of third-party action).
# Now pinned to v3.94.3 commit SHA. Re-pin manually before bumping — never
# go back to @main, @master, or any moving tag on a third-party action.
uses: trufflesecurity/trufflehog@31ce31ee1abbcc7dc8eee5764c17121c3044c8b2 # v3.99.7
with:
# Scan the whole working tree. `--only-verified` suppresses noisy
# unverified hits; the action wrapper appends `--fail` itself, so
# adding it here causes "flag 'fail' cannot be repeated" errors.
path: ./
extra_args: --only-verified
Loading
Loading