Skip to main content

Troubleshooting

scs check failures​

MessageCauseFix
research folder is missing README.mdStatus is Researched or laterscs research --ws <name> --pid <pid>
research/serp.md needs at least 3 competitor URLsSERP evidence is thinAdd real reviewed URLs to serp.md
brief section '…' is emptyBrief half incompleteFill sections 1–10; keep them above <!-- scs:article -->
brief Markdown is missingThe file name no longer matches the title slugSCS resolves the single md/<pid>--*.md; if there are several, remove duplicates or set article_path
brief file not foundbrief_path points at the old briefs/ layoutRe-run scs sync; brief_path now equals article_path
status … requires decision=goDecision not recordedSet decision=go and the reason fields in keywords.csv
status … requires qa_status=approvedReview gate not passedscs qa pull, set the gate fields, scs qa check

scs publish failures​

MessageCauseFix
status must be Writing, Editing, QA, or ScheduledKeyword row is too earlyAdvance the status after the brief is approved
brief must be ApprovedBrief gate not passedscs brief --check then --approve
article Markdown is missingPath or title mismatchscs sync, or check md/<pid>--*.md
internal link target … has no wp_linkLinked page is not publishedPublish the target first or fill wp_link
WordPress post … is publishedSCS refuses to downgrade a live postUse the terminal transition rules; do not force a live post to draft
tip

Run scs publish --dry-run first. It prints the payload and never calls WordPress.

Markers and the single file​

  • Brief half: between <!-- scs:brief --> and <!-- scs:article -->.
  • Article half: after <!-- scs:article -->.
  • If the markers are missing, the whole body is used for both checks and publishing. Add the markers to adopt the current contract.

Keybindings do nothing​

mkdir -p ~/.visidatarc.d/Keybindings
ln -sf ~/github/server-side-program/scs/integrations/visidata/scs_pid.py \
~/.visidatarc.d/Keybindings/46-scs-pid.py
scs aliases --ws <name>

Then restart VisiData. zP opens the PID's Markdown; gp copies its path.

Title changes and file names​

md_path resolves, in order: the registered article_path, the single md/<pid>--*.md, then the title slug. Changing a title does not rename an existing file. If two files exist for one PID, delete the stale one.

Docs build fails locally​

SymptomCauseFix
Minimum Node.js version not metNode 18 on PATHnvm use 22 (build requires ≥ 20)
EACCES … .docusaurusDocker build wrote root-owned filessudo chown -R $USER:$USER .docusaurus build
Broken link warningsPage moved without a slugAdd slug: or a static/_redirects entry

Where to look next​