@1aboveio/skills 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -3
  3. package/skills/app-dev/airflow/SKILL.md +1 -1
  4. package/skills/app-dev/android-foundation/SKILL.md +1 -1
  5. package/skills/app-dev/app-debug/SKILL.md +1 -1
  6. package/skills/app-dev/better-auth/SKILL.md +1 -1
  7. package/skills/app-dev/data-catalog/SKILL.md +1 -1
  8. package/skills/app-dev/data-quality/SKILL.md +1 -1
  9. package/skills/app-dev/ios-foundation/SKILL.md +1 -1
  10. package/skills/app-dev/monorepo/SKILL.md +1 -1
  11. package/skills/app-dev/nextjs-fullstack/SKILL.md +1 -1
  12. package/skills/app-dev/prisma-setup/SKILL.md +1 -1
  13. package/skills/app-dev/pyspark/SKILL.md +1 -1
  14. package/skills/app-dev/python-backend/SKILL.md +1 -1
  15. package/skills/app-dev/shadcn/SKILL.md +1 -1
  16. package/skills/app-dev/zod-v4/SKILL.md +1 -1
  17. package/skills/cicd/cloud-build/SKILL.md +1 -1
  18. package/skills/cicd/cloud-debug/SKILL.md +1 -1
  19. package/skills/cicd/cloud-deploy/SKILL.md +1 -1
  20. package/skills/cicd/docker/SKILL.md +1 -1
  21. package/skills/cicd/github-actions/SKILL.md +1 -1
  22. package/skills/cicd/github-flow/SKILL.md +1 -1
  23. package/skills/cicd/google-cloud/SKILL.md +1 -1
  24. package/skills/cicd/mergify/SKILL.md +1 -1
  25. package/skills/cicd/podman/SKILL.md +1 -1
  26. package/skills/content/article-review/SKILL.md +1 -1
  27. package/skills/content/article-to-image/SKILL.md +1 -1
  28. package/skills/content/flowchart-svg/SKILL.md +1 -1
  29. package/skills/content/image-gen/SKILL.md +1 -1
  30. package/skills/content/mermaid/SKILL.md +1 -1
  31. package/skills/content/wechat-article-writer/SKILL.md +1 -1
  32. package/skills/content/wechat-publisher/SKILL.md +1 -1
  33. package/skills/content/wechat-search/SKILL.md +1 -1
  34. package/skills/content/xai-search/SKILL.md +1 -1
  35. package/skills/core/distill-writing/SKILL.md +1 -1
  36. package/skills/core/doc-to-md/SKILL.md +1 -1
  37. package/skills/core/editorial-review/SKILL.md +1 -1
  38. package/skills/core/house-style/SKILL.md +1 -1
  39. package/skills/core/house-style/references/rules.md +7 -0
  40. package/skills/core/house-style/templates/gap-analysis.md +1 -1
  41. package/skills/core/plain-language/SKILL.md +1 -1
  42. package/skills/core/polish-cn/SKILL.md +1 -1
  43. package/skills/core/reg-parser/SKILL.md +2 -2
  44. package/skills/core/reg-parser/scripts/dump_checklist.py +1 -1
  45. package/skills/core/terminology/SKILL.md +1 -1
  46. package/skills/core/write-doc/SKILL.md +19 -8
  47. package/skills/core/write-doc/references/bilingual.md +10 -1
  48. package/skills/core/write-doc/references/compliance-reports.md +163 -0
  49. package/skills/{risk-compliance/report-writing/references → core/write-doc/references/reports}/audit-report-template.md +2 -2
  50. package/skills/{risk-compliance/report-writing/references → core/write-doc/references/reports}/external-assessment-template.md +21 -5
  51. package/skills/{risk-compliance/report-writing/references → core/write-doc/references/reports}/management-report-template.md +7 -2
  52. package/skills/{risk-compliance/report-writing/references → core/write-doc/references/reports}/vars-report-template.md +6 -3
  53. package/skills/engineering/better-review/SKILL.md +1 -1
  54. package/skills/engineering/contributing/SKILL.md +1 -1
  55. package/skills/engineering/e2e-test/SKILL.md +1 -1
  56. package/skills/engineering/engineering-runtime/SKILL.md +1 -1
  57. package/skills/engineering/engineering-runtime/coherence/workflow.json +13 -13
  58. package/skills/engineering/ensure-coverage/SKILL.md +1 -1
  59. package/skills/engineering/golden-path/SKILL.md +1 -1
  60. package/skills/engineering/harness-runtime/SKILL.md +1 -1
  61. package/skills/engineering/resolve-issues/SKILL.md +1 -1
  62. package/skills/engineering/resolve-release/SKILL.md +1 -1
  63. package/skills/engineering/rush-issues/SKILL.md +1 -1
  64. package/skills/engineering/rush-release/SKILL.md +1 -1
  65. package/skills/engineering/test-quality/SKILL.md +1 -1
  66. package/skills/risk-compliance/compliance-audit/SKILL.md +1 -1
  67. package/skills/risk-compliance/contract-compare/SKILL.md +1 -1
  68. package/skills/risk-compliance/contract-review/SKILL.md +1 -1
  69. package/skills/risk-compliance/doc-authenticity/SKILL.md +1 -1
  70. package/skills/risk-compliance/fraud-analysis/SKILL.md +1 -1
  71. package/skills/risk-compliance/payment-analysis/SKILL.md +1 -1
  72. package/skills/risk-compliance/similar-domain/SKILL.md +1 -1
  73. package/skills/risk-compliance/tld-detection/SKILL.md +1 -1
  74. package/skills/risk-compliance/report-writing/LICENSE +0 -3
  75. package/skills/risk-compliance/report-writing/SKILL.md +0 -220
  76. package/skills/risk-compliance/report-writing/release-check.mjs +0 -93
@@ -1,220 +0,0 @@
1
- ---
2
- name: report-writing
3
- description: "Convert compliance audit findings into audience-formatted reports. Four styles: VARS Review Report (Visa's official 2025 template, required verbatim for VARS engagements), Audit Report (compliance team), External Assessment (regulators/external auditors), Management Report (board/C-suite). Use whenever audit output needs to become a deliverable, even just 'write up the findings'."
4
- release-version: 0.42.0
5
- ---
6
- **Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
7
- # Report Writing
8
-
9
- Generate compliance reports from structured audit findings. Four report styles target
10
- different audiences — same data, different depth and tone.
11
-
12
- ## Input Format
13
-
14
- Structured findings in Markdown with per-item:
15
- - **Status:** Pass / Fail / Partial / N/A
16
- - **Severity:** Critical / Major / Minor / Observation
17
- - **Category:** e.g., Access Control, Data Protection, Incident Response
18
- - **Observations:** What was found
19
- - **Evidence:** Logs, configs, screenshots, code references
20
- - **Recommendations:** Suggested remediation
21
-
22
- If the input deviates, normalize it to the above structure before generating the report.
23
-
24
- ### VARS-specific input requirement
25
-
26
- The VARS Review Report must be generated from the **full** per-control assessment —
27
- typically the `tracker.md` produced by the `compliance-audit` skill running against the
28
- VARS checklist (`skills/compliance/compliance-audit/references/vars-checklist.md`, or a
29
- parsed equivalent from `reg-parser`). Do **not** start a VARS report from a summary,
30
- verbal findings, or a partial sub-domain review — Visa's report aggregates a complete
31
- control-by-control assessment, and Section 5 of the deliverable explicitly references
32
- the *VARS Control Testing and Remediation Tracking* spreadsheet (which is the same
33
- tracker, in Visa's Excel format).
34
-
35
- If the user asks for a VARS report and you don't see a complete tracker covering all
36
- nine sub-domains, **stop and ask** for it — or offer to run `compliance-audit` first.
37
- A VARS report without the underlying control-level evidence is not a deliverable Visa
38
- will accept.
39
-
40
- ## Report Style Selection
41
-
42
- | Style | Audience | When to use |
43
- |---|---|---|
44
- | **VARS Review Report** | Visa, acquirer leadership | Visa Acceptance Risk Standards engagements — uses Visa's official 2025 template |
45
- | **Audit Report** | Compliance team, internal auditors | Day-to-day remediation tracking, technical deep-dives |
46
- | **External Assessment** | Regulators, external auditors, certification bodies | Formal submissions, certification audits, regulatory filings |
47
- | **Management Report** | C-suite, board, leadership | Quarterly reviews, risk committee briefings, budget justification |
48
-
49
- Select the style based on the stated audience or purpose. If unclear, ask. Default to
50
- Audit Report when the requestor is technical. **If the framework is VARS / Visa
51
- Acceptance Risk Standards, always use the VARS Review Report style** — Visa requires
52
- its template verbatim.
53
-
54
- ## Workflow
55
-
56
- ### 1. Ingest Findings
57
-
58
- 1. Read the audit findings file (Markdown). For VARS, this is the `compliance-audit`
59
- tracker produced against the VARS checklist — it must cover all nine sub-domains.
60
- 2. Parse each finding into: ID, title, category, status, severity, observations, evidence, recommendations.
61
- 3. Validate completeness — flag any finding missing severity or status. For VARS,
62
- additionally verify every sub-domain is represented; if any are missing, stop and
63
- surface the gap to the user before drafting.
64
-
65
- ### 2. Select Style
66
-
67
- Confirm the target style with the user or infer from context:
68
- - "VARS" / "Visa Acceptance Risk Standards" / "for Visa" → **VARS Review Report**
69
- - "for the regulator" → External Assessment
70
- - "for the board" / "executive summary" → Management Report
71
- - "full technical report" / default → Audit Report
72
-
73
- ### 3. Generate Report
74
-
75
- **House style.** Use the nearest `WRITING.md`: start in the findings file's folder (pasted text: the output
76
- folder, else the working directory), then parents up to the repository root; never the home
77
- directory or above. Rate every issue from the evidence first; the style changes
78
- wording, never a rating, a finding or which issues appear. Then write the prose in its voice,
79
- language, terms, sentences and presentation. Keep the template structure, severity and rating scales
80
- (including Status values such as Pass / Fail / Partial), finding IDs and every input count; its
81
- terms apply to prose, not rating values. The request beats WRITING.md, which beats this skill's
82
- wording. Never edit WRITING.md. Bilingual: `write-doc`'s bilingual mode. No WRITING.md: write as
83
- below.
84
-
85
- The VARS Review Report ignores WRITING.md entirely: Visa's template wording and structure stay
86
- verbatim.
87
-
88
- Follow the style-specific template. Reference files provide the full structure:
89
-
90
- - **VARS Review Report:** Read `references/vars-report-template.md` (Visa's official 2025 template)
91
- - **Audit Report:** Read `references/audit-report-template.md`
92
- - **External Assessment:** Read `references/external-assessment-template.md`
93
- - **Management Report:** Read `references/management-report-template.md`
94
-
95
- ### 4. Review and Finalize
96
-
97
- 1. Verify coverage:
98
- - Audit Report: every finding from the input has its own section.
99
- - External Assessment: every finding is mapped to a regulatory requirement.
100
- - Management Report / VARS: findings are aggregated by category/sub-domain with no category dropped.
101
- 2. Confirm severity counts match the input data. For VARS: Section 3.d is **executive**
102
- (a headline plus a 2–3 sentence business posture per sub-domain, no operational
103
- detail); Section 4 is **department-manager** detail, with "Compliance Status" carrying
104
- the tracker's Control Effectiveness Rating (Satisfactory / Improvement Recommended /
105
- Unsatisfactory / N/A; worst rating across the row) and "Findings and Comments" written
106
- as an inline observed → finding → comments narrative in the report's own words (no
107
- source-document/clause/sample citations — those stay in the tracker) with the Actions
108
- Required / Recommendations reproduced verbatim. When the ATPA archetype is in scope,
109
- confirm all TPA controls are consolidated into a single "Third Party Agent" row rather
110
- than scattered across the AACQ sub-domains.
111
- 3. Check that no placeholder text remains (e.g. `{{...}}`, `____`, `MM/YEAR`).
112
- 4. Output as Markdown. If DOCX is requested (the VARS deliverable is typically distributed as
113
- DOCX to match Visa's template), **do not rely on a plain `pandoc` Markdown→DOCX conversion
114
- for the Section 4 table** — pandoc collapses the `<br>` line breaks inside the wide
115
- Findings-and-Comments cells, so the enumerated Actions Required / Recommendations items run
116
- together and appear to be missing. Instead render the DOCX so each cell's `<br>`-separated
117
- lines become **separate paragraphs** (e.g. build it with `python-docx`, or post-process the
118
- pandoc output). In Section 4 specifically:
119
- - split every `<br>` into its own paragraph in the cell, so each Actions Required /
120
- Recommendations item is on its own visible line;
121
- - render `**…**` labels (`Actions Required:`, `Recommendations:`) as real **bold**, not
122
- literal asterisks;
123
- - shade the **Compliance Status** cell by rating (Satisfactory = green, Improvement
124
- Recommended = amber, Unsatisfactory = red, N/A = grey);
125
- - set the page to **landscape** to give the table room.
126
- For PDF, the same line-break requirement applies.
127
-
128
- ---
129
-
130
- ## Style Summaries
131
-
132
- ### VARS Review Report
133
-
134
- Visa's official 2025 template, used verbatim. Six fixed sections with mandated
135
- boilerplate (Purpose paragraph, reliance statement, recommendation summary stem) and
136
- nine fixed sub-domains in canonical order — plus a consolidated **Third Party Agent**
137
- row when the ATPA archetype is in scope. Detailed per-control findings live in the
138
- companion *VARS Control Testing and Remediation Tracking* Excel — the report itself
139
- aggregates one row per sub-domain. The two summary layers serve different audiences:
140
- **Section 3.d is executive** (business posture, 2–3 sentences per sub-domain) and
141
- **Section 4 is for department managers / control owners** (an inline observed → finding
142
- → comments narrative in the report's own words, with verbatim Actions Required /
143
- Recommendations and no duplication of the tracker's evidence citations).
144
-
145
- **Key sections:** Cover, Document History, Distribution List, Executive Summary
146
- (Purpose / Background / VARS Control Assessment / Summary of Findings / Recommendation
147
- Summary), Observations Overview (sub-domain table), Detailed Information (pointer to
148
- Excel tracker), Next Steps.
149
-
150
- **Tone:** Formal, third-person, Visa-facing. Preserve the boilerplate paragraphs
151
- verbatim — paraphrasing breaks reviewer expectations.
152
-
153
- ### Audit Report
154
-
155
- Full technical detail. Every finding gets its own section with evidence, root cause analysis,
156
- remediation steps, priority, and suggested timeline. Appendices contain raw evidence.
157
-
158
- **Key sections:**
159
- 1. Report metadata (scope, period, assessor, framework)
160
- 2. Executive summary (pass/fail counts)
161
- 3. Findings (one per item — full detail)
162
- 4. Remediation plan (prioritized)
163
- 5. Appendices (evidence, methodology, glossary)
164
-
165
- **Tone:** Technical, precise, neutral. Use passive voice sparingly. Reference specific
166
- controls, configurations, and code paths.
167
-
168
- ### External Assessment
169
-
170
- Formal language suitable for regulatory submission. Organized by regulatory requirement,
171
- not by internal finding ID. Includes gap analysis matrix and attestation-ready statements.
172
-
173
- **Key sections:**
174
- 1. Cover page and scope statement
175
- 2. Assessment methodology
176
- 3. Compliance status by requirement (article/section mapping)
177
- 4. Gap analysis matrix (requirement × status × severity)
178
- 5. Remediation roadmap
179
- 6. Attestation statement
180
- 7. Appendices (evidence index, assessor qualifications)
181
-
182
- **Tone:** Formal, objective, structured. Reference regulation articles explicitly
183
- (e.g., "Article 32(1)(a) of Regulation (EU) 2016/679"). Avoid colloquial language.
184
-
185
- ### Management Report
186
-
187
- Concise, business-oriented. Leads with a one-page executive summary. Uses visual
188
- indicators (counts, heatmap descriptions) rather than technical evidence.
189
-
190
- **Key sections:**
191
- 1. Executive summary (1 page max — overall posture, key risks, headline numbers)
192
- 2. Risk heatmap (critical/major/minor counts by category)
193
- 3. Business impact analysis (what gaps mean operationally and financially)
194
- 4. Recommended actions with effort estimates (cost, time, owner)
195
- 5. Progress since last assessment (if prior data available)
196
- 6. Appendix (methodology note, detailed data reference)
197
-
198
- **Tone:** Business language, action-oriented. Quantify impact where possible.
199
- Avoid jargon — explain technical concepts in business terms.
200
-
201
- ---
202
-
203
- ## Output Conventions
204
-
205
- - **File naming:** `{style}-{framework}-{YYYY-MM-DD}.md`
206
- - Example: `audit-report-SOC2-2026-03-30.md`
207
- - VARS example: `vars-review-report-{acquirer}-2026-03-30.md`
208
- - **Severity color coding** (for Markdown rendering):
209
- - 🔴 Critical | 🟠 Major | 🟡 Minor | 🔵 Observation
210
- - **Finding IDs:** Preserve original IDs from the input. If absent, assign sequential IDs: `F-001`, `F-002`, etc.
211
- - **Cross-references:** Link findings to remediation items and evidence appendices by ID.
212
-
213
- ## Edge Cases
214
-
215
- - **No critical findings:** Lead the executive summary with overall compliance posture, not absence of criticals.
216
- - **Mixed frameworks:** If findings span multiple frameworks (e.g., SOC 2 + PCI DSS), organize by framework first, then by requirement.
217
- - **Incomplete evidence:** Flag as "Evidence Pending" — do not omit the finding.
218
- - **Prior assessment data unavailable:** Omit the "Progress" section in Management Report; note "Baseline assessment — no prior data" in methodology.
219
- - **VARS sub-domain with no findings:** Still include the row in Section 4 and the bullet in Section 3.d — Compliance Status "Satisfactory", Findings and Comments an inline observed-then-finding narrative closing with "No remediation required." (matching the tracker's Satisfactory Issue Description) — Visa expects all nine sub-domains to appear (plus the Third Party Agent row when ATPA is in scope).
220
- - **VARS legacy numbering:** The official 2025 template skips index 9 in the Section 4 table (Regulatory Risk is labelled #10). The `references/vars-report-template.md` uses sequential 1–9; switch to legacy numbering only if the Visa engagement lead asks.
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env node
2
- import { spawnSync } from 'node:child_process';
3
- import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
4
- import { homedir } from 'node:os';
5
- import { dirname, join } from 'node:path';
6
- import { fileURLToPath } from 'node:url';
7
-
8
- const DAY_MS = 24 * 60 * 60 * 1000;
9
- const WEEK_MS = 7 * DAY_MS;
10
- const here = dirname(fileURLToPath(import.meta.url));
11
-
12
- function readJson(path, fallback = {}) {
13
- try { return JSON.parse(readFileSync(path, 'utf8')); } catch { return fallback; }
14
- }
15
-
16
- function frontmatterValue(text, key) {
17
- const frontmatter = /^---\n([\s\S]*?)\n---/.exec(text)?.[1] ?? '';
18
- const match = new RegExp('^' + key + ':\\s*([^\\n]+)$', 'm').exec(frontmatter);
19
- return match?.[1].trim().replace(/^['"]|['"]$/g, '') ?? null;
20
- }
21
-
22
- function repositoryOf(source) {
23
- const value = String(source ?? '').trim();
24
- const match = /^(?:git@github\.com:|https:\/\/github\.com\/)?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+?)(?:\.git)?$/.exec(value);
25
- return match?.[1] ?? null;
26
- }
27
-
28
- function stableVersion(value) {
29
- const match = /^v?(\d+)\.(\d+)\.(\d+)$/.exec(String(value ?? '').trim());
30
- return match ? match.slice(1).map(Number) : null;
31
- }
32
-
33
- function newer(left, right) {
34
- for (let index = 0; index < 3; index += 1) {
35
- if (left[index] !== right[index]) return left[index] > right[index];
36
- }
37
- return false;
38
- }
39
-
40
- function writeCache(path, value) {
41
- try {
42
- mkdirSync(dirname(path), { recursive: true });
43
- writeFileSync(path, JSON.stringify(value));
44
- } catch { /* A read-only cache must not block skill use. */ }
45
- }
46
-
47
- function main(now = Date.now()) {
48
- if (process.env.ONEABOVEIO_NO_UPDATE_CHECK) return;
49
- const skill = readFileSync(join(here, 'SKILL.md'), 'utf8');
50
- const name = frontmatterValue(skill, 'name');
51
- const localVersion = stableVersion(frontmatterValue(skill, 'release-version'));
52
- if (!name || !localVersion) return;
53
-
54
- const lock = readJson(join(process.env.HOME || homedir(), '.agents', '.skill-lock.json'));
55
- const entry = lock.skills?.[name];
56
- const repository = repositoryOf(entry?.sourceUrl || entry?.source);
57
- if (!repository) return;
58
-
59
- const cacheRoot = process.env.XDG_CACHE_HOME || join(process.env.HOME || homedir(), '.cache');
60
- const cachePath = join(cacheRoot, '1aboveio-skills', 'release-check.json');
61
- const all = readJson(cachePath);
62
- const cache = all[repository] && typeof all[repository] === 'object' ? all[repository] : {};
63
-
64
- if (!cache.lastCheck || now - cache.lastCheck >= DAY_MS) {
65
- const result = spawnSync('gh', ['api', 'repos/' + repository + '/releases/latest', '--jq', '.tag_name'], {
66
- encoding: 'utf8',
67
- stdio: ['ignore', 'pipe', 'ignore'],
68
- timeout: 1500,
69
- });
70
- cache.lastCheck = now;
71
- if (result.status === 0 && stableVersion(result.stdout)) cache.latestTag = result.stdout.trim();
72
- else delete cache.latestTag;
73
- all[repository] = cache;
74
- writeCache(cachePath, all);
75
- }
76
-
77
- const latestVersion = stableVersion(cache.latestTag);
78
- if (!latestVersion || !newer(latestVersion, localVersion)) return;
79
- if (cache.notifiedTag === cache.latestTag && cache.notifiedAt && now - cache.notifiedAt < WEEK_MS) return;
80
-
81
- cache.notifiedTag = cache.latestTag;
82
- cache.notifiedAt = now;
83
- all[repository] = cache;
84
- writeCache(cachePath, all);
85
- const command = `npx skills@1.5.23 add '${repository}#${cache.latestTag}' --global --agent universal claude-code --skill ${name} --yes`;
86
- process.stdout.write(
87
- `UPDATE_AVAILABLE: A newer 1AboveIO skills release (${cache.latestTag}) is available; this skill is `
88
- + `v${localVersion.join('.')}. Ask once whether to refresh ${name}. On approval run \`${command}\`. `
89
- + 'The refreshed instructions apply next session. Either way, continue the current task and do not ask again this session.\n',
90
- );
91
- }
92
-
93
- try { main(); } catch { /* Update checks are advisory and always fail silent. */ }