Skip to main content

Terminal Runbooks

The system is designed for a terminal-first operator using VisiData, nvim, Yazi, opencode, and SSH. These runbooks keep the gates in order.

Daily​

scs check --workspace bs
scs brief --workspace bs --pid FS-0001 --check
scs publish --workspace bs --pid FS-0001 --dry-run

Move one article one stage forward. Do not skip a gate.

Workspaces​

scs ws is shorthand for scs workspace:

scs ws --list # list workspaces and record counts
scs ws list # same as --list
scs list # same as --list
scs ws bs # create workspace data/bs/
scs ws bs --delete # archive it (confirmation prompt)
scs ws bs --delete --force # archive without the prompt

Archived workspaces move to archive/workspaces/<name>-<timestamp>; the restore command is printed when the archive finishes.

Weekly​

Monday — intake and scoring​

scs import-csv --site fundamentalstock --workspace bs --source Writerzen export.csv
scs score --workspace bs
vd data/bs/bs-keywords.csv

Select candidates manually. Record decision, decision_reason, decision_factors, decided_by, and decided_on.

Tuesday — research​

The full command creates the research folder and files:

scs research --workspace bs --pid FS-0001
scs research --workspace bs --pid FS-0001 --check
nvim data/bs/research/FS-0001/README.md
nvim data/bs/research/FS-0001/serp.md

Optionally, define a scsr Bash helper in ~/.bashrc to use the shorter scsr <project-name> <pid> form:

scsr() {
if [[ $# -ne 2 ]]; then
echo "Usage: scsr <project-name> <pid>" >&2
return 2
fi
scs research --workspace "$1" --pid "$2"
}

Reload with source ~/.bashrc, then use scsr bs FS-0001. This is a shell convenience wrapper, not a built-in SCS command. The workspace must already exist. Use the full scs research ... --check command to validate the folder.

Wednesday — cluster and brief​

vd data/bs/bs-clusters.csv
scs brief --workspace bs --pid FS-0001
vd data/bs/bs-briefs.csv
scs brief --workspace bs --pid FS-0001 --check
scs brief --workspace bs --pid FS-0001 --approve

Thursday — draft​

nvim data/bs/md/FS-0001--*.md
scs check --workspace bs

Write the article after <!-- scs:article -->. Keep the brief half (between <!-- scs:brief --> and <!-- scs:article -->) intact so scs brief --check continues to pass and only the article is published. The generated compact front matter keeps public CMS fields at top level and writer context under scs.*; rendering refreshes that metadata while preserving the authored body. Keep detailed SERP/research evidence in research/<pid>/.

Friday — draft, QA, publish decision​

scs sync --workspace bs
scs publish --workspace bs --pid FS-0001 --dry-run
scs publish --workspace bs --pid FS-0001
scs publish data/bs/md/FS-0001--balance-sheet-basics.md --dry-run
scs qa open --workspace bs --pid FS-0001

Review in WordPress. Set wpw_review_status, reviewer, date, scope, and checklist. Then:

scs qa pull --workspace bs --pid FS-0001
scs qa pull data/bs/md/FS-0001--balance-sheet-basics.md
scs qa check --workspace bs --pid FS-0001 --advance

If the article was edited in WordPress, compare before publishing again and retrieve a review copy without replacing the SCS source:

scs wp diff --ws bs --pid FS-0001
scs wp pull-content --ws bs --pid FS-0001

You can also pass the registered article Markdown path instead of workspace and PID, for example scs wp diff data/bs/md/FS-0001--balance-sheet-basics.md.

Review the *.wordpress-<post-id>.md snapshot and manually reconcile any desired changes into the authoritative SCS article. The pull-content command refuses to overwrite an existing snapshot.

Change the publishing state from the terminal, then pull it back:

scs publish --workspace bs --pid FS-0001 --to pending
scs publish --workspace bs --pid FS-0001 --to future --date 2026-11-10
scs publish --workspace bs --pid FS-0001 --status

Monthly​

  • Pull GSC query-level data into performance.csv.
  • Review 30/90-day clicks, position, and CTR.
  • Check cannibalization and refresh candidates.
  • Run scs check --workspace bs and scs links check --workspace bs.

Quarterly​

  • Score the content portfolio: traffic, ranking, engagement, conversion, decay.
  • Prioritise refreshes by impact and effort.
  • Prune or consolidate pages that cannot be improved.
  • Review cluster coverage and entity gaps.
  • Update the site/workspace README.
tip

If a step feels slow, fix the template or the command. Do not bypass the gate.