Skip to content

Commit 2f62810

Browse files
committed
Remove external receipt helper from envelope skill
1 parent 72ab09a commit 2f62810

7 files changed

Lines changed: 19 additions & 418 deletions

File tree

.env.example

Lines changed: 0 additions & 12 deletions
This file was deleted.

README.md

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -145,29 +145,6 @@ This standalone skill was extracted from the envelope generator originally bundl
145145

146146
Code, templates, and documentation are licensed under the MIT License. CompleteTech LLC names, logos, seals, and brand assets are reserved and are not licensed for reuse except to identify this project. See `LICENSE` and `BRAND_ASSETS.md`.
147147

148-
## Certificate Receipts
148+
## Network Boundary
149149

150-
This skill can run normally without a classroom key. For certificate credit, run the skill workflow first, then request a one-time receipt from `cert.complete.tech`:
151-
152-
```bash
153-
python scripts/request_receipt.py \
154-
--class-id "cls_agentic_envelope_skill" \
155-
--session-id "ses_YYYYMMDD_agentic_envelope_skill" \
156-
--completion-key "$CT_CERT_COMPLETION_KEY"
157-
```
158-
159-
The helper sends `class_id`, `session_id`, `completion_key`, `skill_id`, `skill_version`, a generated `run_id`, optional artifact hash, and metadata to `https://cert.complete.tech/api/skill-runs`. It prints the receipt code and writes a receipt JSON file. Students use the receipt code at `https://cert.complete.tech/claim`. Do not commit real completion keys.
160-
161-
If the skill produced a file, include it so the receipt records an artifact hash:
162-
163-
```bash
164-
python scripts/request_receipt.py --artifact output/example.pdf
165-
```
166-
167-
### Receipt Tests
168-
169-
```bash
170-
python tests/test_receipt_cli.py
171-
```
172-
173-
The test uses a local fake receipt API and does not require live keys or the live `cert.complete.tech` endpoint.
150+
This skill is local-only. It does not include outbound network helpers, callbacks, or any helper that posts envelope run metadata to an external service.

SKILL.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: agentic-envelope-skill
33
description: Generate branded CompleteTech LLC printable #10 addressed envelope PDFs and delivery packages with sender, recipient, optional attention line, postage box text, return-address toggle, logo, brand palette, attachment manifests, filenames, recipient metadata, and delivery-readiness checks. Use when Codex needs to package contracts, certificates, invoices, proposals, notices, or other CompleteTech artifacts for mailing or external delivery.
4-
version: 1.0.1
4+
version: 1.0.2
55
metadata:
66
openclaw:
77
skillKey: agentic-envelope-skill
@@ -78,10 +78,6 @@ python generate_envelope.py \
7878
5. If packaging multiple artifacts, return a manifest with artifact path, recipient, delivery mode, approval status, and missing facts.
7979
6. Return the generated PDF path and remind the user to print at 100% scale when physical mailing is requested.
8080

81-
## Certificate Receipt Guidance
81+
## Network Boundary
8282

83-
The skill remains usable without a classroom key. When certificate credit is needed, use `scripts/request_receipt.py` after the skill run. The shared class key is provided through `CT_CERT_COMPLETION_KEY`, `--completion-key`, or a registry profile; the website claim form receives only the generated receipt code.
84-
85-
Receipt requests include this skill ID: `agentic-envelope-skill`. The helper sends class/session IDs, the shared key, skill version, generated run ID, optional artifact hash, and metadata to `https://cert.complete.tech/api/skill-runs`. The student claims the certificate at `https://cert.complete.tech/claim` with the returned receipt.
86-
87-
Do not print, store, or commit real classroom completion keys.
83+
This skill is local-only. It does not include outbound network helpers, callbacks, or any helper that posts envelope run metadata to an external service.

agents/openai.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ interface:
44
default_prompt: "Use $agentic-envelope-skill to generate a branded CompleteTech LLC #10 addressed envelope."
55

66
policy:
7-
allow_implicit_invocation: true
7+
allow_implicit_invocation: false

scripts/request_receipt.py

Lines changed: 0 additions & 219 deletions
This file was deleted.

scripts/validate_quality.py

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,6 @@ def parse_structured_files() -> None:
9191
def mermaid_command() -> list[str] | None:
9292
if shutil.which("mmdc"):
9393
return ["mmdc"]
94-
if shutil.which("npx"):
95-
return ["npx", "--yes", "@mermaid-js/mermaid-cli"]
9694
return None
9795

9896

@@ -103,7 +101,7 @@ def validate_mermaid(skip: bool) -> None:
103101
return
104102
cmd = mermaid_command()
105103
if skip or cmd is None:
106-
reason = "requested" if skip else "mmdc/npx not available"
104+
reason = "requested" if skip else "mmdc not available"
107105
print(f"mermaid skipped: {reason}")
108106
return
109107
with tempfile.TemporaryDirectory(prefix="skill-mermaid-") as tmp:
@@ -114,20 +112,18 @@ def validate_mermaid(skip: bool) -> None:
114112

115113

116114
def smoke_generators() -> None:
117-
generator_commands = {
118-
"generate_certificate.py": ["--config", "config.ini", "examples/northwind_workshop.ini", "--out", "{tmp}/certificate.pdf"],
119-
"generate_contract.py": [
120-
"--config", "config.ini", "examples/northwind_support_triage.ini", "--out", "{tmp}/contract.pdf",
121-
"--markdown-out", "{tmp}/contract.md", "--no-envelope",
122-
],
123-
"generate_envelope.py": ["--config", "config.ini", "examples/northwind_address.ini", "--out", "{tmp}/envelope.pdf"],
124-
}
125115
with tempfile.TemporaryDirectory(prefix="skill-generator-") as tmp:
126-
for path in sorted(ROOT.glob("generate_*.py")):
127-
run([sys.executable, str(path), "--help"])
128-
args = generator_commands.get(path.name)
129-
if args:
130-
run([sys.executable, str(path), *[arg.format(tmp=tmp) for arg in args]])
116+
path = ROOT / "generate_envelope.py"
117+
run([sys.executable, str(path), "--help"])
118+
run([
119+
sys.executable,
120+
str(path),
121+
"--config",
122+
"config.ini",
123+
"examples/northwind_address.ini",
124+
"--out",
125+
f"{tmp}/envelope.pdf",
126+
])
131127
print("generator smoke ok")
132128

133129

@@ -158,10 +154,7 @@ def run_pyright() -> None:
158154
if shutil.which("pyright"):
159155
run(["pyright"])
160156
return
161-
if shutil.which("npx"):
162-
run(["npx", "--yes", "pyright"])
163-
return
164-
raise RuntimeError("pyrightconfig.json exists, but pyright/npx is unavailable")
157+
raise RuntimeError("pyrightconfig.json exists, but pyright is unavailable")
165158

166159

167160
def frontmatter() -> dict[str, Any]:

0 commit comments

Comments
 (0)