Skip to content

Add GraphPaper agent skill and headless writing workflows - #14

Merged
AronAxe merged 2 commits into
mainfrom
feat/agent-skills
Oct 18, 2026
Merged

AronAxe merged 2 commits into
mainfrom
feat/agent-skills

Conversation

@AronAxe

@AronAxe AronAxe commented Oct 18, 2026

Copy link
Copy Markdown
Owner

What this adds

A copyable skills/graphpaper/ pack with SKILL.md, six on-demand reference guides, MIT license and scripts/gp.py.

The helper starts the existing GraphPaper backend without the desktop window and provides JSON API calls, file upload, job submission/polling/cancellation and direct exports. It does not copy prompts into a second writing pipeline. Agents can use GraphPaper's own model pipeline, or supply their own prose and use its graph/source/voice/decision/review/export functions.

The guides cover nonfiction, polemic, fiction, Science, reusable voices, System One and reversible editing. Angle and outline selection can be delegated to the calling agent; the user does not have to click through GraphPaper. Inbox import is explicit and verified instead of asking for a second upload.

Boundaries

  • Separate explicit agent data directory; existing desktop databases require deliberate adoption. One headless host per workspace.
  • Normal session-cookie authentication and API headers, loopback-only connections, no proxy/redirect following, no automatic write replay.
  • Preserve authorial force and reasoning. Real human corrections only; no agent-authored labels posing as user feedback, fake scientific attestations or invented JEV scores.
  • Environment-supplied credentials are temporary and never appear in shell arguments; the helper refuses provisioning that would silently erase saved credentials.
  • No user-machine or private-account access, no changes to the Windows application or its release package.

Verification

The missing-skill/helper contract failed before implementation. The 16 standalone client/skill checks now pass in the disposable container; the actual-backend class and headless integration are locally skipped because the source environment is not mounted there. The new Agent skills read-only workflow requires those dependencies and runs the real-HTTP backend and headless-process tests on Windows and Linux; missing dependencies are failures in CI, not passing skips.

Backend tests use the repository's clearly synthetic model fixtures, not live provider calls. Independent live agent behavior/quality scenarios are documented separately and are not claimed completed by these tests. Hosted results pending at PR creation.

Only the new skills folder and its test workflow are changed. No snapshot/transfer workflow is part of this PR.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-18T09:07:43.474459Z 108a2e6 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 108a2e689b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +218 to +220
slot, sep, name = item.partition('=')
if not sep or slot not in {'llm', 'openrouter', 'typesafe'} or not re.fullmatch(r'[A-Za-z_][A-Za-z0-9_]*', name):
raise ValueError('Use --key-env typesafe=ENVIRONMENT_VARIABLE (or llm/openrouter).')

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Accept scholarly credential slots in --key-env

When a Science workflow needs authenticated PubMed or Semantic Scholar access, this validation rejects ncbi=... and semantic_scholar=..., even though Vault.NAMES supports both and ScholarlyClient.search reads them for actual requests. Since JSON-supplied api_keys are also rejected, the documented helper provides no safe way to provision these optional credentials, leaving rate-limited users unable to follow the backend's instruction to add an API key.

Useful? React with 👍 / 👎.

Comment on lines +143 to +144
except (urllib.error.URLError, TimeoutError, OSError):
raise ClientError('Loopback request failed or timed out. No automatic retry: inspect current jobs before resubmitting a write or paid action.') from None

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve polling-timeout semantics when the status request stalls

When /api/jobs/{id} fails to respond before the remaining polling deadline, wait() caps that request's socket timeout to the deadline, but this handler converts the resulting timeout into a generic ClientError. The CLI consequently exits with code 2 and omits the structured job payload instead of producing the documented JobTimeout result and exit code 4, which can cause automation to misclassify an ambiguous still-running job; translate this deadline-bound request timeout into JobTimeout while retaining the job ID.

Useful? React with 👍 / 👎.

AronAxe commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

Verified before merge

Final skill revision: e9ca9ebd3e4802aeac5cbcfca2ef663baf9e45c0.

All 22 agent-skill tests pass on both Windows and Linux, with the actual backend required (no missing-dependency skips). The suite exercises a real headless server process, standard session-cookie HTTP access, graph → angles → outline → draft/export for nonfiction/polemic/fiction using synthetic models, Science plan/author-confirmation boundaries, Inbox import without duplicate upload, reusable voices across projects, stale-save protection, failed-job recovery, settings/credential preservation and workspace locks.

The first Windows run caught a mandatory byte-lock read before acquiring the lock; the helper now locks the region without reading it first. It also caught a test fixture's platform newline assumption; multipart tests now verify exact LF and CRLF bytes. No tests were removed or bypassed.

Skill matrix: https://github.com/AronAxe/GraphPaper/actions/runs/39114363824
Existing application quality matrix and browser workflows: https://github.com/AronAxe/GraphPaper/actions/runs/39114363790 (success).

This validates executable backend access, storage and workflow behavior, not live JEV editorial quality or behavior in every agent host. The pack includes separate live-agent acceptance scenarios. No private account/model calls, desktop project changes or user-computer access occurred. Only skills/ and its read-only test workflow are added.

@AronAxe
AronAxe merged commit 8ce8c55 into main Oct 18, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant