Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
829b1db
feat(jianying): add the jianying Plugin (8 MCP verbs + 6 Skills)
antianqi Oct 21, 2026
b177082
test(jianying): make the focused suite layout-agnostic
antianqi Oct 21, 2026
cdd6587
fix(jianying): complete the machine-readable capability contract
antianqi Oct 21, 2026
4857f1c
docs(jianying): frame the grading chain as verification, and show why
antianqi Oct 21, 2026
d1a34d3
feat(jianying): the official op set is 199, not 27 — and subtitles no…
antianqi Oct 21, 2026
09a4328
feat(jianying): wire the full official op set (199) and land the audi…
antianqi Oct 21, 2026
4e86cb0
docs(jianying): correct the audio claim — written into the draft is n…
antianqi Oct 21, 2026
d726180
fix(jianying): calibrate the pixel criterion per frame instead of aga…
antianqi Oct 21, 2026
3302ac7
docs(jianying): the denoise chain is now measured end to end, not jus…
antianqi Oct 22, 2026
ab42cd4
feat(jianying): add make_film, one command from a Jianying draft to a…
antianqi Oct 22, 2026
ec48b03
feat(jianying): make_film takes a grade spec, and a silent grading fa…
antianqi Oct 22, 2026
595254a
fix(jianying): a grading node that cannot be applied now says so
antianqi Oct 22, 2026
d68e0af
test(jianying): point the film end to end at a draft that still exists
antianqi Oct 22, 2026
b294602
fix(jianying): remove the dead parameter, split the silent failures, …
antianqi Oct 22, 2026
cb5d702
docs(jianying): the discipline list has ten rules, not six
antianqi Oct 22, 2026
ec6c5bf
docs(jianying): make the usage flow walkable, and check that it stays…
antianqi Oct 22, 2026
b360111
fix(jianying): a misspelled grading parameter must not bake into a si…
antianqi Oct 22, 2026
6665413
test(jianying): cover the semantic criterion the documentation teache…
antianqi Oct 22, 2026
7dc9990
fix(jianying): give each Skill a distinct set of triggers, and make t…
antianqi Oct 23, 2026
e397391
feat(jianying): add the pipeline Skill, so a request that spans chain…
antianqi Oct 23, 2026
4b13a39
feat(jianying): the pipeline routes become machine readable and checked
antianqi Oct 23, 2026
b7d3059
fix(jianying): session state can no longer reach outside PLUGIN_DATA
antianqi Oct 23, 2026
ef273c1
fix(jianying): refuse to write over a real draft that changed during …
antianqi Oct 24, 2026
aec0ef9
test(jianying): cover the parameters that were declared but never ver…
antianqi Oct 24, 2026
8366804
fix(jianying): an official acceptance is not a change, so the patch n…
antianqi Oct 24, 2026
114f6d8
fix(jianying): read the real drafts, which are sealed on disk
antianqi Oct 24, 2026
8c43ed1
test(jianying): the loudness assertion runs for the first time
antianqi Oct 24, 2026
4f33b4a
feat(jianying): the pipeline becomes a verb, so one call walks a whol…
antianqi Oct 24, 2026
be5166b
feat(jianying): the intent route table becomes machine readable and m…
antianqi Oct 24, 2026
4cd8364
fix(jianying): the deleted scope parameter was still being passed, so…
antianqi Oct 24, 2026
d2c9e93
feat(jianying): the orchestrator learns to wait for a human, and two …
antianqi Oct 24, 2026
96e28b4
feat(jianying): two more pipeline routes, and the enum drift that hid…
antianqi Oct 24, 2026
d67ac89
feat(jianying): reviewing one version, and PASS no longer means "ever…
antianqi Oct 24, 2026
a1a8be7
feat(jianying): compare two versions, and fix a loudness criterion wr…
antianqi Oct 24, 2026
1845b32
feat(jianying): curve-class grading joins the pipeline, and the audit…
antianqi Oct 24, 2026
13ef088
feat(jianying): the classifier now returns a verdict, and "never gues…
antianqi Oct 24, 2026
1d420c5
feat(jianying): the verdict says what to ask the user and how to fill…
antianqi Oct 24, 2026
de15275
chore(jianying): keep the route file in its original layout
antianqi Oct 24, 2026
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
69 changes: 69 additions & 0 deletions .github/workflows/jianying-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: jianying (windows-latest)

on:
pull_request:
paths:
- 'plugins/antianqi/jianying/**'
- '.github/workflows/jianying-windows.yml'
- 'test/jianying.test.mjs'
push:
branches: [main]
paths:
- 'plugins/antianqi/jianying/**'
- '.github/workflows/jianying-windows.yml'
- 'test/jianying.test.mjs'
# Manual dispatch: lets the maintainer or the PR author run the same
# windows-latest job outside a PR. The fork-to-upstream PR cannot trigger
# Actions without explicit maintainer approval, and first-time-contributor
# protection is on, so this is the way to capture a real Windows run.
workflow_dispatch:

# The repository-wide `validate` job runs on ubuntu-latest and checks the
# package shape (manifests, Skills, MCP transports, docs, placeholders, path
# safety). The `jianying` Plugin is Windows-only: its runtime needs a live
# Jianying instance, a local named pipe and a Windows toolchain, none of
# which exist on a GitHub-hosted Linux runner.
#
# This workflow is the scoped Windows counterpart, and it follows the rule
# recorded in .github/workflows/ci.yml: a non-tool-map Windows Plugin adds its
# own paths-filtered workflow that runs exactly one focused test file, rather
# than re-introducing a `validate-windows` job that scans the whole
# repository (that job was dropped in round-9 because it failed on files this
# PR does not own).
#
# The test below is static and cross-platform: it asserts the manifest shape,
# that every Skill path in the v0.4 manifest resolves AND that its frontmatter
# name equals its directory name (a mismatch is silently dropped by the
# runtime, with no diagnostic), that script invocations are anchored to
# ${PLUGIN_ROOT}, and that the Plugin ships no network client, no credential
# literal, no telemetry and no contributor machine path.
#
# The runtime-dependent parts (the verb self-tests, the end-to-end draft edit,
# the official renderer) need a real Windows desktop with Jianying 11.6
# installed, so they are documented in the PR description as manual evidence
# rather than pretended into CI.

permissions:
contents: read

jobs:
jianying-windows:
name: jianying on windows-latest (package shape, Skill paths, no hardcoded paths)
runs-on: windows-latest
timeout-minutes: 10
defaults:
run:
shell: pwsh
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node (system)
run: |
node --version
npm --version

- name: Run jianying focused test suite
run: |
cd '${{ github.workspace }}'
node --test test/jianying.test.mjs
37 changes: 37 additions & 0 deletions plugins/antianqi/jianying/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "jianying",
"version": "0.2.0",
"description": "用逐像素复刻的剪映调色链给视频调色并出 10bit 成片(保留原音轨),附逐节点生效探针与画面级验收。10 个 MCP 动词覆盖草稿读写、调色、混音、渲染、验收、一条命令出成片,以及按预置路线编排多条动词(官方渲染器画面 + 我们的调色/混音 + ffmpeg 编码 + 带断言的验收)。",
"author": {
"name": "antianqi",
"url": "https://github.com/antianqi"
},
"license": "Apache-2.0",
"keywords": [
"mcode",
"jianying",
"video-editing",
"color-grading",
"10bit",
"mcp"
],
"skills": [
"./skills/jianying-cut/SKILL.md",
"./skills/jianying-draft-edit/SKILL.md",
"./skills/jianying-review/SKILL.md",
"./skills/jianying-talk-cut/SKILL.md",
"./skills/jianying-verify/SKILL.md",
"./skills/jianying-grade-chain/SKILL.md",
"./skills/jianying-pipeline/SKILL.md"
],
"mcpServers": {
"jianying": {
"type": "stdio",
"command": "node",
"args": [
"./mcp/server.mjs"
],
"cwd": "./mcp"
}
}
}
421 changes: 421 additions & 0 deletions plugins/antianqi/jianying/EVIDENCE.md

Large diffs are not rendered by default.

192 changes: 192 additions & 0 deletions plugins/antianqi/jianying/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

Copyright 2026 MCode Plugins contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Loading
Loading