YC Office Hours
garrytan/gstack
Runs a YC-style office hours session that pressure-tests a product idea before any code and ends in a design document instead of an implementation.
Run the CCS Align seat's hourly breathing cycle — prove the local claude-mem worker is healthy, pull needle observations through search → timeline → getobservations, land them in a seat-owned middle…
$ npx skills add thedotmack/claude-mem --skill ccs-align -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install thedotmack/claude-mem ccs-align --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugin/skills/ccs-align .claude/skills/ccs-align && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ccs-align" agent skill from https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-align into .claude/skills/ccs-align/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ccs-align", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-alignType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add thedotmack/claude-mem --skill ccs-align -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install thedotmack/claude-mem ccs-align --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugin/skills/ccs-align .agents/skills/ccs-align && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ccs-align" agent skill from https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-align into .agents/skills/ccs-align/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ccs-align", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add thedotmack/claude-mem --skill ccs-align -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install thedotmack/claude-mem ccs-align --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugin/skills/ccs-align .cursor/skills/ccs-align && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ccs-align" agent skill from https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-align into .cursor/skills/ccs-align/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ccs-align", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/thedotmack/claude-mem.git --path plugin/skills/ccs-align--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add thedotmack/claude-mem --skill ccs-align -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install thedotmack/claude-mem ccs-align --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugin/skills/ccs-align .gemini/skills/ccs-align && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ccs-align" agent skill from https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-align into .gemini/skills/ccs-align/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ccs-align", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install thedotmack/claude-mem ccs-alignInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add thedotmack/claude-mem --skill ccs-align -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugin/skills/ccs-align .github/skills/ccs-align && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ccs-align" agent skill from https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-align into .github/skills/ccs-align/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ccs-align", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add thedotmack/claude-mem --skill ccs-align -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install thedotmack/claude-mem ccs-align --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thedotmack/claude-mem.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugin/skills/ccs-align .opencode/skills/ccs-align && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ccs-align" agent skill from https://github.com/thedotmack/claude-mem/tree/main/plugin/skills/ccs-align into .opencode/skills/ccs-align/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ccs-align", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ccs-alignRun the CCS Align seat's hourly breathing cycle — prove the local claude-mem worker is healthy, pull needle observations through search → timeline → getobservations, land them in a seat-owned middle…
Ccs Align is an agent skill from thedotmack/claude-mem. Run the CCS Align seat's hourly breathing cycle — prove the local claude-mem worker is healthy, pull needle observations through search → timeline → getobservations, land them in a seat-owned middle cache via atomic grab → append → filter exclude-marks → replace, manage exclude marks, and walk house → project → seat rules to detect conflicts (SHADOWHOUSE, DENYALLOW, DRIFT, CLOCKHEADER) with an append-only rules-report.md. Use when asked to run CCS Align, breathe the alignment seat, refresh the middle cache…
Its SKILL.md is about 6.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future…. The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 71ddd11. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlbunrgnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ccs Align loads about 6.1k tokens when it runs. Until then it costs about 157 tokens; SKILL.md has 2,379 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from thedotmack/claude-mem at commit 71ddd11, republished under its Apache-2.0 licence (© thedotmack). 2,379 words, ~6,130 tokens.
.claude/skills/ccs-align/SKILL.md (or your agent's skills folder).CCS Align is a standing seat, not a bird's-eye planner. Its one job, once an hour: talk to the local claude-mem worker, pull recent needle observations through the existing three-layer disclosure ladder, and land them in a seat-owned middle cache using grab → append → replace.
This skill implements the Phase 0 breathing slice, Phase 1 exclude marks, and Phase 2 rules alignment from the plan of record, plans/2026-09-09-ccs-align.md. Phases 0–2 are shipped and merged (#3934, #3935, #3936); Phase 3 is verify / sign-off (this loop) — no new product surface. It is not a context compiler, not Focus/mouth, and not Grok Memory Phase 2. When you speak to the human, address them as Alex.
search → timeline → get_observations → append records to ~/.claude-mem/ccs-align/<viewerId>/middle.jsonl (atomic, deduped).middle.jsonl no longer contains the record — the diary / SQLite stay authoritative. Unmarking + rebuild restores the observation. DELETE /api/observation/:id is forbidden.SHADOW_HOUSE, DENY_ALLOW, DRIFT, CLOCK_HEADER), emit an append-only rules-report.md. Optionally dry-run/apply SHADOW_HOUSE leaf patches when CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS=true. Runs every 6th hour of the hourly Worker Watch cycle (D4). This is a checklist, not a parser — no .cas compiler.profile.md, write LFG/Orifice [awareness] logs (that seam belongs to #3931), add a sixth processAgentResponse consumer, restart the worker, run a per-turn drip update, enforce Focus/mouth/standing rules, or copy house text into seats.CCS Align is deliberately small. It does not ship, and this loop does not add, any of the following — these are future work or a different agent, called out so no one reads more into the seat than is there:
.cas parser, no compileAwareness(), no JIT compile, no computed-styles UI. The CCS Notion page types (Bucket, canRead) are teaching copy quoted as comments — never a runtime parser.[awareness] logs. #3931 owns agents/**/memory/log/YYYY-MM.md. Align writes only its seat-owned middle cache.DELETE /api/observation, no A-MEM row rewrite.As of this sign-off, the repo (package, plugin, marketplace) is at 13.24.5 (this Phase 3 PATCH), but the running worker plugin on the house box may still be 13.24.1. That is an operational MISS to record, not fix here: this seat does not restart or upgrade the worker (a hard forbid). If the live box still shows 13.24.1, note it when rolling status up to the Prioritizer so the worker gets restarted onto the current plugin out-of-band. If the running worker already matches the package version, this MISS is closed.
The claude-mem worker must be running locally. This seat talks to the local worker (per-UID port ~37700), never the cloud CMEM MCP — cloud observation:<base64> ids are a different API and must not be mixed in.
Resolve the worker port once and reuse $WORKER_PORT in every curl below. This snippet is copied from the timeline-report skill and honors CLAUDE_MEM_WORKER_PORT → ~/.claude-mem/settings.json → the per-UID default 37700 + (uid % 100):
WORKER_PORT="${CLAUDE_MEM_WORKER_PORT:-$(node -e "const fs=require('fs'),p=require('path'),os=require('os');const uid=(typeof process.getuid==='function'?process.getuid():77);const fallback=String(37700+(uid%100));try{const s=JSON.parse(fs.readFileSync(p.join(os.homedir(),'.claude-mem','settings.json'),'utf-8'));process.stdout.write(String(s.CLAUDE_MEM_WORKER_PORT||fallback));}catch{process.stdout.write(fallback);}" 2>/dev/null)}"Do not hardcode port 37777 — ports are per-UID.
Defaults live in SettingsDefaultsManager.ts; override in ~/.claude-mem/settings.json:
| Key | Default | Meaning |
|---|---|---|
CLAUDE_MEM_CCS_ALIGN_ENABLED | true | Master switch for the seat. |
CLAUDE_MEM_CCS_ALIGN_VIEWER_IDS | ccs-align | Comma-separated viewer ids the seat maintains a cache for. |
CLAUDE_MEM_CCS_ALIGN_TRIGGER_TYPES | decision,bugfix,security_alert,sensitive | Needle observation types to pull (copied from #3931's list, D6). |
CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS | false | Phase 2 rules-shadow patch gate. When true, the rules walker removes SHADOW_HOUSE duplicate lines from leaf files (atomic temp+rename). Default off — report-only. |
Pilot viewer id is ccs-align. The seat may read LFG observations (agent id 521e962d-2ec3-4488-bfbc-54d5209ce118) as a project filter, but must not write LFG/Orifice monthly logs or any profile.md.
Run this every hour on a weekday house board. One purpose. No watercooler. No "while I was here I also…".
every hour (weekday house board):
1. Resolve WORKER_PORT (snippet above)
2. GET /api/health || GET /health → abort with a one-line miss if down
3. search(obs_type=needles, limit=20) since cursor.lastObservationId
4. timeline(anchor=newest) → collect neighbor ids
5. get_observations(ids=…)
5b. (Phase 1, mark-time only) If excluding: get_tool_uses for tool ids → record on mark
6. grab middle.jsonl → append new → filter exclude-marks → replace atomic
7. if original-cache path set and not writable: append-only to middle.jsonl (already done)
8. update cursor.json
9. every 6th hour: rules walk → append rules-report.md (Phase 2 — see below)
10. Speak to Alex only on red (worker down, write refused, unexpected profile.md touch)Use the $WORKER_PORT snippet above.
/api/health)Prefer GET /api/health; also accept the viewer alias GET /health. The public worker docs still show GET /health and a port field — both are stale. Health does not return a port; use GET /api/stats (worker.port) if you need it.
curl -sS "http://127.0.0.1:${WORKER_PORT}/api/health" || curl -sS "http://127.0.0.1:${WORKER_PORT}/health"
# expect a JSON body with "status":"ok". If the worker is down, abort with a
# one-line miss — do NOT start it, do NOT retry aggressively.If health cannot be proven (e.g. no live worker in a cloud VM), record a MISS and stop. Do not fabricate a cache cycle.
The disclosure order is search → timeline → get_observations. Never jump straight to get_observations, and do not call get_tool_uses in Phase 0 (that is Phase 1).
search with the needle obs_type list (CLAUDE_MEM_CCS_ALIGN_TRIGGER_TYPES), limit ≤ 20, optionally scoped by project. Use the cursor's lastObservationId to avoid re-pulling the whole diary.
curl -sS "http://127.0.0.1:${WORKER_PORT}/api/search?query=*&type=decision&limit=20&format=json"timeline anchored on the newest hit. The worker's code default depth is 10 (SearchManager.ts) — the MCP text that says "3" is stale, so omit the depths (worker applies 10) or pass 10 explicitly.
curl -sS "http://127.0.0.1:${WORKER_PORT}/api/timeline?anchor=<newestObservationId>"get_observations for the ids you will actually cache.
curl -sS -X POST "http://127.0.0.1:${WORKER_PORT}/api/observations/batch" \
-H 'content-type: application/json' \
-d '{"ids":[12345,12346]}'The MCP twins are search → timeline → get_observations. Worker get_observations ids are numbers; do not pass cloud observation:<base64> ids into /api/observations/batch.
Land the observations with the seat helper src/services/integrations/CcsAlignMiddleCache.ts
(landObservationsInMiddleCache). It copies the #3931 atomic primitive
(appendAwarenessLineAtomic + awarenessLineBody) with exactly three changes:
the tag is [ccs-align], the path root is ~/.claude-mem/ccs-align/<viewerId>/,
and the file is middle.jsonl.
Phase 1 adds an exclude-marks filter inside the atomic pipeline:
grab: read middle.jsonl if it exists, else empty
filter: load exclude-marks.json; drop any record whose id is marked
append: for each new observation id not already present AND not marked, append one record
replace: write temp + rename (copy appendAwarenessLineAtomic; never appendFileSync)
fallback: if an OPTIONAL original-cache path is set and not writable, skip grab/replace
on that path and append timeline items to middle.jsonl onlyThere is no compiled laminate file in-repo, so the fallback resolves to "append to the seat file" — never invent a laminate.
Each line of middle.jsonl is one record. The shape is locked for Phase 0 (do not add fields):
{
"v": 1,
"id": 12345,
"type": "decision",
"title": "…",
"created_at": "2026-09-09T00:00:00.000Z",
"project": "claude-mem",
"agent_id": null,
"source": "worker",
"line": "- 2026-09-09 [ccs-align] decision — «…»"
}line is formatCcsAlignLine: the awareness line format with the tag swapped,
written by the same shared formatter, so the recalled text is sanitized (no tag
framing or invisible characters) and fenced in «…», truncated inside the fence
to 500 chars. Dedupe is by observation id and
by body (the line from [ccs-align] onward, date excluded), so the same fact on
a new day is still skipped and the file does not grow on a repeat cycle.
A minimal invocation (bun/node):
import { landObservationsInMiddleCache } from '../../src/services/integrations/CcsAlignMiddleCache.js';
landObservationsInMiddleCache({
viewerId: 'ccs-align',
observations: rowsFromGetObservations, // [{ id, type, title, subtitle, facts, created_at, project, agent_id }]
});It never throws into the caller — a broken write path is logged and swallowed.
Write ~/.claude-mem/ccs-align/<viewerId>/cursor.json so the next hour does not re-pull the whole diary:
{ "lastRunAt": "…", "lastObservationId": 12345, "healthPath": "/api/health", "workerPort": 37700 }Use writeCursor from the helper (atomic temp + rename).
Roll status up to the Prioritizer. Only speak to Alex on red: worker down, a write was refused, or an unexpected profile.md touch. Otherwise stay quiet.
"Purge" means the compiled middle.jsonl no longer contains the observation or its tool I/O for that viewer. The diary stays. This is Secure Isolated Awareness + context-stripper — not delete.
Each viewer has ~/.claude-mem/ccs-align/<viewerId>/exclude-marks.json:
{
"v": 1,
"marks": [
{
"observationId": 12345,
"toolUseIds": ["toolu_01abc", 678],
"reason": "sibling-wall|manual|stripper|secure-isolation",
"markedAt": "2026-09-09T00:00:00.000Z",
"markedBy": "ccs-align"
}
]
}Marks are managed by addExcludeMark / removeExcludeMark in CcsAlignMiddleCache.ts, or by manual JSON edit.
exclude-marks.json and add a mark entry.exclude <observationId> --reason … (manual, sibling-wall, stripper, secure-isolation).When recording tool-use ids on a mark:
get_observations, if you need tool ids, call get_tool_uses / POST /api/tool-uses/batch (layer 4).toolUseIds array.tool_input / tool_response into middle.jsonl — layer 4 stays out of the laminate.DELETE /api/observation/:id — that tombstones the diary and breaks rebuild-from-history.Warning:
get_tool_usesis layer 4 of the progressive disclosure ladder. It returns raw tool I/O and should only be called at mark-time to capture tool-use ids for an exclude mark. Never call it during the normal hourly cycle. Never persist itstool_input/tool_responsepayloads into any cache file.
To restore a previously excluded observation:
exclude-marks.json (removeExcludeMark or manual edit).search → timeline → get_observations).rebuildMiddleCache to clear and re-land the compiled file from the authoritative diary.The observation reappears in middle.jsonl on the next cycle because the diary was never touched.
Each viewer's middle cache is independent:
~/.claude-mem/ccs-align/viewer-a/middle.jsonl~/.claude-mem/ccs-align/viewer-b/middle.jsonlObservations landed for viewer A never appear in viewer B's compiled file. Exclude marks for viewer A do not affect viewer B. This implements the Secure Isolated Awareness property: inject a unique eval token into viewer A's cache → run viewer B → assert A's token never appears in B's compiled file.
import {
addExcludeMark,
removeExcludeMark,
rebuildMiddleCache,
ccsAlignExcludeMarksPath,
readExcludeMarks,
} from '../../src/services/integrations/CcsAlignMiddleCache.js';
const marksPath = ccsAlignExcludeMarksPath(dataRoot, 'ccs-align');
// Mark an observation as excluded (with optional tool-use ids)
addExcludeMark(marksPath, 12345, ['toolu_01abc'], 'manual');
// Unmark and rebuild
removeExcludeMark(marksPath, 12345);
rebuildMiddleCache({
viewerId: 'ccs-align',
observations: allObservationsFromDiary,
dataRoot,
});DELETE /api/observation/:id — tombstone ≠ exclude mark; breaks rebuild-from-history.[awareness] logs, or into any agents/**/memory/log/ path.profile.md, user-memory, or project memory.POST /api/context/semantic (per-turn drip the awareness design forbids).processAgentResponse consumer — CCS Align pulls; #3931 owns that seam.POST /api/settings..cas compiler so the report looks smarter.Every 6th hour of the hourly Worker Watch cycle (D4), the seat walks house → project → seat layers to detect and report rules conflicts. This is a checklist, not a parser. No .cas compiler.
obs, note, person) by default| Layer | Where to look (house box) | Bucket |
|---|---|---|
| House | user-memory/ shared profile; Notion CCS :root | profile, standing, owns |
| Project | .cmem-projects/<project>/, repo CLAUDE.md | project overrides |
| Seat | agents/<uuid>/profile.md, agents/<uuid>/memory/ | leaf — must not duplicate house |
On a box with no agent-data tree, the report records MISS: house-box paths and exits cleanly.
| Code | Pattern | Agency |
|---|---|---|
SHADOW_HOUSE | Leaf file contains a line that also exists at house (or starts with House rule) | Dry-run remove-from-leaf; apply only if CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS=true |
DENY_ALLOW | Same bucket allow at one layer, deny at another | Report only |
DRIFT | House text changed; leaf still has old wording (partial prefix match) | Report only |
CLOCK_HEADER | Top-of-prompt clock / "current time is" in a profile | Report only (house rule: no clock in the prefix) |
Output: ~/.claude-mem/ccs-align/<viewerId>/rules-report.md — dated, append-only sections. Each run appends a new section with a timestamp, a table of conflicts, any MISS entries, and a patches-applied count. Status rolls up to Prioritizer (never peer spam).
When CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS=true:
SHADOW_HOUSE conflicts are patched — never DENY_ALLOW, DRIFT, or CLOCK_HEADER.CcsAlignMiddleCache).standing / Focus / always.md / never.md / danger.md / profile.md.import {
walkRules,
discoverLayerPaths,
type RulesWalkerConfig,
} from '../../src/services/integrations/CcsAlignRulesWalker.js';
// Discover paths on the current box
const paths = discoverLayerPaths({ project: 'claude-mem' });
const config: RulesWalkerConfig = {
dataRoot: '~/.claude-mem',
viewerId: 'ccs-align',
patchShadows: false, // report-only by default
housePaths: paths.housePaths,
projectPaths: paths.projectPaths,
seatPaths: paths.seatPaths,
};
const result = walkRules(config);
// result.conflicts — array of detected conflicts
// result.misses — paths that were not found
// result.reportPath — path to the appended rules-report.md
// result.patchesApplied — number of SHADOW_HOUSE lines removed (0 if patchShadows=false)Phase 3 closes the plan loop. It proves the seat is hourly-runnable, documented, and honest about what it is not — it does not add runtime behavior.
Prove the boundary, not the code (§3.1):
search → timeline → get_observations → middle.jsonl.GET /api/observation/N).MISS on a box with no agent-data tree).Prove nothing regressed (§3.2): run the tests in the Verification section below, including the #3931 pusher and transcript tests. #3931 behavior must stay: LFG/Orifice still get [awareness] lines from the worker pusher, not from Align.
Anti-pattern grep (§3.3): no DELETE /api/observation, no notifyGrokBotAwareness, no processAgentResponse reuse in the seat helpers (forbid/comment mentions are fine — the seat must not use them).
Sign-off (§3.4): this skill can be run by a Worker Watch seat with no extra product context; the shipped defaults still match the D-rows; the Prioritizer can roll this up as "CCS Align Phase 0 green / Phase 1 marks / Phase 2 report."
See plans/2026-09-09-ccs-align.md §3 for the full contract.
.cas runtime — future work, paper scaffold, out of this plan.See plans/2026-09-09-ccs-align.md "Explicit non-goals" for the full list.
bun test tests/integrations/ccs-align-middle-cache.test.ts
# Phase 0: format/truncate, needle match, append, dedupe, path safety, never-throw, cursor round-trip
# Phase 1: mark drop, diary present, tool ids not in middle.jsonl, viewer isolation,
# unmark+rebuild, exclude-marks round-trip, buildExcludeSet, secure-isolation,
# corrupt marks fail-closed, marked ids skipped on ingest
bun test tests/integrations/ccs-align-rules-walker.test.ts
# Phase 2: SHADOW_HOUSE detection (exact dup + "House rule" prefix), default report-only
# (leaf unchanged), patchShadows=true (leaf loses duplicates, house unchanged),
# never patches standing/always/never, MISS on absent paths, CLOCK_HEADER detection,
# DENY_ALLOW detection, DRIFT detection, append-only report, atomic patch,
# full walkRules integration, edge cases
# #3931 must not regress — LFG/Orifice still get [awareness] lines from the worker pusher, not Align
bun test tests/integrations/grok-bot-awareness-pusher.test.tsVerification greps (plan §2.3):
# Report path documented
rg -n "rules-report" plugin/skills/ccs-align/SKILL.md
# expect ≥1
# Patch gated
rg -n "CCS_ALIGN_PATCH_SHADOWS" plugin/skills/ccs-align/SKILL.md
# expect ≥1Live-box checks (house, not CI — a cloud VM may have no live worker; record a MISS if so):
curl -sS "http://127.0.0.1:$WORKER_PORT/api/health" returns status: ok~/.claude-mem/ccs-align/ccs-align/middle.jsonl existsmiddle.jsonlGET /api/observation/N still returns the row (diary is authoritative)middle.jsonlprofile.md under any agents/ path is byte-identical to beforememory/log/YYYY-MM.md unchanged by Align© thedotmack, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugin/skills/ccs-align of thedotmack/claude-mem.
Open the folder on GitHubat commit 71ddd11
Ccs Align next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ccs Align this skillthedotmack/claude-mem | 98k | — | ~6.1k | Automated safety check: Pass | Apache-2.0 | |
| YC Office Hoursgarrytan/gstack | 136k | — | ~4.2k | Automated safety check: Pass | MIT | |
| Bio Read Alignment Bowtie2 AlignmentGPTomics/bioSkills | 1.2k | 1 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Office Hoursalirezarezvani/claude-skills | 28k | — | ~935 | Automated safety check: Pass | MIT | |
| Bio Read Alignment Star AlignmentGPTomics/bioSkills | 1.2k | 1 repos | ~4.7k | Automated safety check: Pass | MIT | |
| Bio Read Alignment Hisat2 AlignmentGPTomics/bioSkills | 1.2k | 1 repos | ~3.8k | Automated safety check: Pass | MIT |
garrytan/gstack
Runs a YC-style office hours session that pressure-tests a product idea before any code and ends in a design document instead of an implementation.
GPTomics/bioSkills
Aligns DNA short reads to a reference with Bowtie2, choosing end-to-end (whole read must align) vs local (soft-clip read ends) mode and a sensitivity preset; the de-facto aligner for ChIP-seq…
alirezarezvani/claude-skills
/cs:office-hours <topic — YC-style 6-question founder interrogation before any advice.
GPTomics/bioSkills
Aligns RNA-seq reads to a genome with STAR, the fast splice-aware aligner whose splice-junction database (built from a GTF at sjdbOverhang = readlength-1) and two-pass mode set junction sensitivity…
GPTomics/bioSkills
Aligns RNA-seq reads to a genome with HISAT2, the splice-aware aligner whose hierarchical graph FM-index runs at roughly a quarter of STAR's memory (~7 GB for human), whose SNP/haplotype graph index…
sickn33/agentic-awesome-skills
Debtor and creditor credit-cycle analysis: weighted collection or payment days, ageing buckets, credit limit utilisation and gap against benchmark.
thedotmack/claude-mem
Walks you through creating, installing and verifying a custom claude-mem mode, including note types, tags and optional Telegram alerts for chosen memories.
thedotmack/claude-mem
Checks claude-mem cloud sync status and guides you through connecting a cmem.ai Pro account without the sync token ever passing through the chat.
thedotmack/claude-mem
Searches the user's persistent cross-session memory for timestamped observations synthesized from past agent sessions on cmem.ai.
thedotmack/claude-mem
Pairs the claude-mem Cowork plugin with a cmem.ai account by writing the sync token, user id and SyncHub URL into the plugin config without exposing the secret.
thedotmack/claude-mem
Writes a narrative Journey Into report on a project's whole development history, built from the timeline that claude-mem has recorded.
thedotmack/claude-mem
Keeps watching a pull request, fixing real review and CI problems and resolving stale threads, until it is clean and ready to merge.
Run the CCS Align seat's hourly breathing cycle — prove the local claude-mem worker is healthy, pull needle observations through search → timeline → getobservations, land them in a seat-owned middle…. Ccs Align is an agent skill from thedotmack/claude-mem.md.
Ccs Align fits situations like: asked to run CCS Align; breathe the alignment seat; refresh the middle cache; restore an observation.
Run `npx skills add thedotmack/claude-mem --skill ccs-align -a claude-code`. Or copy the skill folder (plugin/skills/ccs-align in thedotmack/claude-mem) into .claude/skills/ccs-align in your project. Claude Code loads it when a task matches its description.
Run `npx skills add thedotmack/claude-mem --skill ccs-align -a codex`. Or copy the skill folder (plugin/skills/ccs-align in thedotmack/claude-mem) into .agents/skills/ccs-align in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add thedotmack/claude-mem --skill ccs-align -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ccs-align, .gemini/skills/ccs-align, .github/skills/ccs-align and .opencode/skills/ccs-align in your project.
Going by SKILL.md and its folder, Ccs Align needs the command-line tools its instructions call (curl, bun, rg and node).
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ccs Align is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.1k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ccs Align: YC Office Hours (garrytan/gstack, 136k stars), Bio Read Alignment Bowtie2 Alignment (GPTomics/bioSkills, 1.2k stars), Office Hours (alirezarezvani/claude-skills, 28k stars) and Bio Read Alignment Star Alignment (GPTomics/bioSkills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
thedotmack (a GitHub user) maintains it in thedotmack/claude-mem, which has 97,851 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 7, 2026.
Source: thedotmack/claude-mem on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.