Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 5 additions & 3 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "writing-method",
"version": "0.1.0",
"description": "Reader-oriented writing, documentation workflows and local PDF delivery.",
"version": "0.2.0",
"description": "Reader-oriented writing, documentation workflows, local PDF delivery and narrated tutorial videos.",
"author": {
"name": "Peter Hense"
},
Expand All @@ -11,7 +11,9 @@
"writing",
"documentation",
"review",
"pdf"
"pdf",
"video",
"tutorial"
],
"displayName": "Peter's Writing Method",
"homepage": "https://github.com/phense/writing-method",
Expand Down
8 changes: 5 additions & 3 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "writing-method",
"version": "0.1.0",
"description": "Reader-oriented writing, documentation workflows and local PDF delivery.",
"version": "0.2.0",
"description": "Reader-oriented writing, documentation workflows, local PDF delivery and narrated tutorial videos.",
"author": {
"name": "Peter Hense"
},
Expand All @@ -10,7 +10,9 @@
"writing",
"documentation",
"review",
"pdf"
"pdf",
"video",
"tutorial"
],
"skills": "./skills/",
"interface": {
Expand Down
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,11 @@ htmlcov/
.method-core-transaction/
.method-core-stage-*/
.method-core-retired-*/

# credentials: only *.env.example is tracked
env/*.env

# a project's own video profile and pronunciation list hold house choices
# (voice, hosts, storage paths); only the *.example.json files are tracked
video-profile.json
pronunciation.json
18 changes: 18 additions & 0 deletions BACKLOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Generated GitHub Issues cache — do not edit
# Backlog
<!-- engineering-method:backlog-document {"schema_version":1,"project_key":"WM","mode":"github-cache"} -->

GitHub Issues are canonical. Refresh this cache; do not make local canonical mutations.

## Status legend

- `⭕` Open
- `🔄` In progress
- `✅` Complete
- `❌` Blocked

## Tasks

<!-- engineering-method:backlog {"schema_version":1,"id":"WM-001","title":"Narrated presentation videos: scripting, production and review skills","status":"in_progress","priority":"P1","parent_id":null,"depends_on":[],"notes":"Spec approved 2026-11-13. Skills, guides, project template, credential examples and tests implemented on branch wm-001-presentation-video (uncommitted); 235 tests pass; rehearsed end to end on the sample video (docs/specs/WM-001-presentation-video/rehearsal.md). Open: maintainer listening check, playbook review, live host trigger evaluations, commit and pull request.","updated_at":"2026-11-13T11:56:44Z"} -->
- 🔄 `WM-001` **P1** Narrated presentation videos: scripting, production and review skills
- Notes: Spec approved 2026-11-13. Skills, guides, project template, credential examples and tests implemented on branch wm-001-presentation-video (uncommitted); 235 tests pass; rehearsed end to end on the sample video (docs/specs/WM-001-presentation-video/rehearsal.md). Open: maintainer listening check, playbook review, live host trigger evaluations, commit and pull request.
5 changes: 5 additions & 0 deletions FEATURES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Features

Peter's Engineering Method is currently pre-release. No plugin capability has been implemented or released yet.

This file records working, user-visible or architectural capabilities after they exist. Planned work belongs only in `BACKLOG.md`.
35 changes: 30 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
type: reference
audience: Authors and maintainers familiar with their coding assistant and Git
version: 0.1.0
version: 0.2.0
---
# Writing Method

Writing Method provides reader-oriented writing, documentation planning, review and local PDF delivery for Claude, Codex and OpenCode. Install it on its own or alongside [Engineering Method](https://github.com/phense/engineering-method). Both bundle shared support from [Method Core](https://github.com/phense/method-core); no sibling checkout is needed at runtime.
Writing Method provides reader-oriented writing, documentation planning, review, local PDF delivery and narrated tutorial videos for Claude, Codex and OpenCode. Install it on its own or alongside [Engineering Method](https://github.com/phense/engineering-method). Both bundle shared support from [Method Core](https://github.com/phense/method-core); no sibling checkout is needed at runtime.

The three repositories remain under `phense`, share the `agent-methods` topic and have independent Issues and pull requests. Report a writing behavior here, an engineering behavior in Engineering Method, and shared adapter/state/playbook behavior in Method Core.

Expand All @@ -17,14 +17,39 @@ The three repositories remain under `phense`, share the `agent-methods` topic an
| Produce reviewed PDFs | documentation-pdf |
| Explain and instruct | explaining-concepts, writing-procedures, empathic-troubleshooting |
| Keep prose and documents consistent | human-prose-drafting, terminology-guard, visual-placeholders |
| Script, produce and review narrated tutorial videos | tutorial-video-scripting, presentation-video-production, presentation-video-review |
| Shared support from Core | project-backlog, verification-before-completion, requesting-code-review, receiving-code-review, using-git-worktrees, dispatching-parallel-agents, playbook-authoring, playbook-review |

Describe the outcome to your assistant. A small wording edit needs focused editing; a standalone document uses authoring and self-review; a coherent document set uses planning, authoring and review. PDF generation follows content review. Playbooks support concrete publication/export operations when their decisions or recovery needs warrant one; ordinary writing does not automatically create one.
Describe the outcome to your assistant. A small wording edit needs focused editing; a standalone document uses authoring and self-review; a coherent document set uses planning, authoring and review. PDF generation follows content review. A tutorial video is scripted, produced and reviewed in that order; see [Narrated tutorial videos](#narrated-tutorial-videos). Playbooks support concrete publication/export operations when their decisions or recovery needs warrant one; ordinary writing does not automatically create one.

## Terms

A **method** is this plugin's workflow and supporting skills. A **host adapter** maps shared operations to a coding assistant. **Core** is the shared source copied into the plugin. A **core lock** records that copy's revision, hashes and executable modes. A **work ID** identifies persistent project work. A **playbook** is a scenario-bound procedure whose draft, review and rehearsal are separate evidence.

## Narrated tutorial videos

A **presentation video** is composed from designed scenes and synthesized narration; nothing is filmed. A **tutorial video** is a presentation video that teaches. Marketing clips, filmed material and screen recordings are out of scope.

| Phase | Skill | Result |
|---|---|---|
| Script | tutorial-video-scripting | A reviewed script: one audience, one message per scene, narration written for listening, a source for every claim. The script check must pass before anything is voiced. |
| Produce | presentation-video-production | Voiced narration, a timeline derived from the measured sound, check stills, the rendered file and its measurement |
| Review | presentation-video-review | Two gates: before voicing, and before delivery (every still, a listening check, the measured file) |

Each video is a copy of the [project template](templates/presentation-video/README.md), which carries its own tools. House choices (voice, pauses, loudness, opening sequence, render and delivery location) live once in a `video-profile.json` of the target project, never in this plugin. Rules that hold for every provider are in [speech synthesis](shared/media/speech-synthesis.md); rules for the wording are in [writing for listening](shared/media/spoken-style.md).

Two speech providers are supported. Azure AI Speech is voiced line by line with a key from an env file and can run unattended. ElevenLabs is voiced scene by scene through its connector in the assistant session; this method stores no ElevenLabs key. [Credential examples](env/README.md) contain variable names only.

What the method enforces, from measurements of earlier videos:

- No time is entered by hand. The pause between sentences is one profile value (default 0.65 s) and is measured in the rendered file.
- The voice must speak the target language and English. Key terms are voiced and verified before the whole video is voiced, and read back by speech recognition afterwards.
- A provider setting counts only after its effect was measured for the voice.
- A tutorial video has no target length; above the profile's maximum (default 45 minutes) the script is split at a chapter boundary.
- Resolution, frame rate, loudness and peak are measured on the delivered file.

The video tools need Node with npm, `ffmpeg` and `ffprobe` in addition to Python. They are checked and named when missing, not installed.

## Installation

Prerequisites: a supported Claude or Codex CLI, Git, and Python 3.11 or newer for state tools. Clone this repository to a retained directory. These commands register the local checkout as a marketplace; run the pair for your host:
Expand All @@ -41,7 +66,7 @@ claude plugin install writing-method@writing-method

For a session-scoped Claude test use `claude --plugin-dir /absolute/path/to/writing-method`. For OpenCode, run `python3 scripts/install-opencode --check` from this checkout, inspect the proposed path, then repeat without `--check`. It installs an owned `writing-method.js` loader pointing to this retained directory. Gemini support is deferred until its adapter is verified.

Restart the assistant session after installation and inspect its plugin inventory for `writing-method` 0.1.0. An installed listing proves discovery; a live authoring request is separate behavior evidence. With both methods installed, use the invoking method's namespace for shared support, such as `writing-method:playbook-authoring`, and run one copy.
Restart the assistant session after installation and inspect its plugin inventory for `writing-method` 0.2.0. An installed listing proves discovery; a live authoring request is separate behavior evidence. With both methods installed, use the invoking method's namespace for shared support, such as `writing-method:playbook-authoring`, and run one copy.

## Project state and updates

Expand All @@ -59,6 +84,6 @@ python3 scripts/validate-plugin
python3 -m unittest discover -s tests -t . -v
```

These checks cover installed-relative resources, source integrity, state behavior, isolated package use and OpenCode coexistence. PDF generation additionally needs the tools/fonts described by `documentation-pdf`; this plugin does not install them automatically. Source tests and native plugin installation do not prove model routing, content quality or provider availability. No live Claude result is claimed during an outage.
These checks cover installed-relative resources, source integrity, state behavior, isolated package use and OpenCode coexistence. PDF generation additionally needs the tools/fonts described by `documentation-pdf`; this plugin does not install them automatically. Video tests that need `ffmpeg` are skipped where it is absent; the timing, script-check and pronunciation logic is tested without it. A rendered sample video and a provider run are separate evidence, recorded in `docs/specs/WM-001-presentation-video/rehearsal.md`. Source tests and native plugin installation do not prove model routing, content quality or provider availability. No live Claude result is claimed during an outage.

Original code uses the [MIT License](LICENSE). Adapted Humanizer material is listed in [third-party notices](THIRD_PARTY_NOTICES.md); shared adaptations retain [Core notices](CORE_NOTICES.md). The project is independent of the named assistant providers.
Loading
Loading