skilldrop-cli 0.16.42 → 0.16.44
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.
- package/package.json +1 -1
- package/packs/ai-engineering/skills/agent-config-review/manifest.json +1 -1
- package/packs/ai-engineering/skills/agent-config-review/scripts/agent_config_scan.py +6 -1
- package/packs/ai-engineering/skills/ai-usage-report/manifest.json +1 -1
- package/packs/ai-engineering/skills/ai-usage-report/scripts/build_report.py +30 -13
- package/packs/career/skills/cover-letter/manifest.json +1 -1
- package/packs/career/skills/cover-letter/scripts/claim_check.py +25 -3
- package/packs/career/skills/resume-tailor/manifest.json +1 -1
- package/packs/career/skills/resume-tailor/scripts/claim_check.py +25 -3
- package/packs/converters/skills/file-to-markdown/manifest.json +1 -1
- package/packs/converters/skills/file-to-markdown/scripts/to_markdown.py +4 -2
- package/packs/converters/skills/md-to-confluence/manifest.json +1 -1
- package/packs/converters/skills/md-to-confluence/scripts/md_to_confluence.py +8 -5
- package/packs/converters/skills/md-to-html/manifest.json +1 -1
- package/packs/converters/skills/md-to-html/scripts/md_to_html.py +7 -0
- package/packs/converters/skills/md-to-pptx/manifest.json +1 -1
- package/packs/converters/skills/md-to-pptx/scripts/md_to_pptx.py +5 -4
- package/packs/converters/skills/mermaid-render/manifest.json +1 -1
- package/packs/converters/skills/mermaid-render/scripts/render_mermaid.py +2 -1
- package/packs/core/skills/output-hygiene/manifest.json +1 -1
- package/packs/core/skills/output-hygiene/scripts/scrub.py +3 -2
- package/packs/data-analytics/skills/sql-review/manifest.json +1 -1
- package/packs/data-analytics/skills/sql-review/scripts/sql_lint.py +10 -3
- package/packs/design/skills/brand-kit/manifest.json +1 -1
- package/packs/design/skills/brand-kit/scripts/check_brand.py +11 -5
- package/packs/design/skills/deck-builder/manifest.json +1 -1
- package/packs/design/skills/deck-builder/scripts/build_deck.py +19 -9
- package/packs/design/skills/marketing-flyer/manifest.json +1 -1
- package/packs/design/skills/marketing-flyer/scripts/build_flyer.py +10 -1
- package/packs/dev-team/skills/behaviour-equivalence/manifest.json +1 -1
- package/packs/dev-team/skills/behaviour-equivalence/scripts/golden_diff.py +3 -1
- package/packs/dev-team/skills/codebase-tour/manifest.json +1 -1
- package/packs/dev-team/skills/codebase-tour/scripts/repo_facts.py +6 -1
- package/packs/dev-team/skills/dependency-upgrade-review/manifest.json +1 -1
- package/packs/dev-team/skills/dependency-upgrade-review/scripts/upgrade_diff.py +2 -2
- package/packs/dev-team/skills/pre-merge-review/manifest.json +1 -1
- package/packs/dev-team/skills/pre-merge-review/scripts/gate.py +7 -1
- package/packs/dev-team/skills/rollout-plan/manifest.json +1 -1
- package/packs/dev-team/skills/rollout-plan/scripts/canary_math.py +2 -2
- package/packs/frontend/skills/bundle-size-review/manifest.json +1 -1
- package/packs/frontend/skills/bundle-size-review/scripts/bundle_stats.py +1 -1
- package/packs/frontend/skills/web-performance-review/manifest.json +1 -1
- package/packs/frontend/skills/web-performance-review/scripts/lh_summary.py +6 -1
- package/packs/grc/skills/risk-register/manifest.json +1 -1
- package/packs/grc/skills/risk-register/scripts/check_register.py +6 -1
- package/packs/infra-as-code/skills/terraform-plan-review/manifest.json +1 -1
- package/packs/infra-as-code/skills/terraform-plan-review/scripts/plan_summary.py +3 -1
- package/packs/product-manager/skills/lean-canvas/manifest.json +1 -1
- package/packs/product-manager/skills/lean-canvas/scripts/unit_economics.py +1 -1
- package/packs/research/skills/hypothesis-comparison/manifest.json +1 -1
- package/packs/research/skills/hypothesis-comparison/scripts/ach_matrix.py +3 -0
- package/packs/research/skills/source-synthesis/manifest.json +1 -1
- package/packs/research/skills/source-synthesis/scripts/citations.py +2 -1
- package/packs/skill-engineering/skills/skill-review/manifest.json +1 -1
- package/packs/skill-engineering/skills/skill-review/scripts/lint_skill.py +4 -1
- package/packs/solution-architect/skills/event-contract-draft/manifest.json +1 -1
- package/packs/solution-architect/skills/event-contract-draft/scripts/check_asyncapi.py +9 -2
- package/packs/solution-architect/skills/figma-diagrams/manifest.json +1 -1
- package/packs/solution-architect/skills/figma-diagrams/scripts/frame_to_mermaid.py +1 -1
- package/packs/solution-architect/skills/figma-diagrams/scripts/post_comment.py +1 -1
- package/packs/solution-architect/skills/interactive-diagram/manifest.json +1 -1
- package/packs/solution-architect/skills/interactive-diagram/scripts/build_diagram.py +17 -3
- package/packs/sre-oncall/skills/cloud-cost-review/manifest.json +1 -1
- package/packs/sre-oncall/skills/cloud-cost-review/scripts/cost_summary.py +5 -2
- package/packs/sre-oncall/skills/delivery-metrics-report/manifest.json +1 -1
- package/packs/sre-oncall/skills/delivery-metrics-report/scripts/delivery_metrics.py +4 -0
- package/packs/trackers/skills/backlog-triage/manifest.json +1 -1
- package/packs/trackers/skills/backlog-triage/scripts/triage_backlog.py +7 -2
- package/packs/trackers/skills/team-status-report/manifest.json +1 -1
- package/packs/trackers/skills/team-status-report/scripts/status_counts.py +5 -1
- package/packs/trackers/skills/tracker-brief-sync/manifest.json +1 -1
- package/packs/trackers/skills/tracker-brief-sync/scripts/brief_sync.py +10 -2
|
@@ -96,6 +96,8 @@ def load_rows(path: Path) -> list:
|
|
|
96
96
|
text = path.read_text(encoding="utf-8-sig")
|
|
97
97
|
except OSError as e:
|
|
98
98
|
die("cannot read {}: {}".format(path, e))
|
|
99
|
+
except UnicodeDecodeError:
|
|
100
|
+
die("{} is not UTF-8 text; save it as UTF-8 and retry".format(path))
|
|
99
101
|
if suffix in (".csv", ".tsv"):
|
|
100
102
|
delim = "\t" if suffix == ".tsv" else ","
|
|
101
103
|
reader = csv.reader(io.StringIO(text, newline=""), delimiter=delim)
|
|
@@ -309,7 +311,9 @@ def main(argv=None) -> int:
|
|
|
309
311
|
planned = [by_key[k] for k in keys if k in by_key]
|
|
310
312
|
plan_source = "plan file {} ({} keys)".format(args.plan_file.name, len(keys))
|
|
311
313
|
elif args.sprint:
|
|
312
|
-
|
|
314
|
+
# Whole-name match; repeated Sprint columns are joined with ", " (carried-over items).
|
|
315
|
+
want = args.sprint.strip().lower()
|
|
316
|
+
planned = [it for it in items if want in [x.strip().lower() for x in it["sprint"].split(",")]]
|
|
313
317
|
plan_source = "items in sprint '{}'".format(args.sprint)
|
|
314
318
|
elif "due" in mp:
|
|
315
319
|
planned = [it for it in items if it["due"] and start <= it["due"] <= end]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tracker-brief-sync",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Turn a brief or PRD (such as prd-draft output) into tracker-ready epics and issues — title, description, acceptance criteria, labels and a link back to the doc section — as a CSV for Jira, a mapped CSV for other importers, or gh commands for GitHub; and in reverse, report drift between the doc and the tracker (issues with no section, sections with no issue, issues for Won't-have requirements). Use when the user wants to load a PRD into Jira, Linear or GitHub, says \"create tickets from this brief\", or asks \"does the tracker still match the PRD?\".",
|
|
5
5
|
"entrypoint": "SKILL.md",
|
|
6
6
|
"deps": {
|
|
@@ -194,7 +194,7 @@ def parse_doc(path: Path, id_pattern: str, headings: bool) -> dict:
|
|
|
194
194
|
continue
|
|
195
195
|
if s.startswith("|"):
|
|
196
196
|
cells = [c.strip().strip("*").strip() for c in s.strip("|").split("|")]
|
|
197
|
-
if cells and broad.match(cells[0]):
|
|
197
|
+
if cells and broad.match(cells[0]) and not headings:
|
|
198
198
|
moscow = ""
|
|
199
199
|
for c in cells[2:]:
|
|
200
200
|
if c.lower() in MOSCOW:
|
|
@@ -334,11 +334,19 @@ def cmd_export(args) -> int:
|
|
|
334
334
|
it.get("parent") or "", by_id[it["parent"]]["title"] if it.get("parent") else "",
|
|
335
335
|
source_line(spec, it, doc_info)])
|
|
336
336
|
text = out.getvalue()
|
|
337
|
+
# Written as built, with no newline translation: the CSV's rows end in \r\n, as CSV
|
|
338
|
+
# requires, and on Windows a text-mode write would turn each into \r\r\n, which an
|
|
339
|
+
# importer reads as a blank row between every issue.
|
|
337
340
|
if args.output:
|
|
338
|
-
args.output
|
|
341
|
+
with open(args.output, "w", encoding="utf-8", newline="") as fh:
|
|
342
|
+
fh.write(text)
|
|
339
343
|
n_epics = sum(1 for it in items if it["type"].lower() == "epic")
|
|
340
344
|
sys.stderr.write("wrote {}: {} items ({} epics, {} others)\n".format(
|
|
341
345
|
args.output, len(items), n_epics, len(items) - n_epics))
|
|
346
|
+
elif hasattr(sys.stdout, "buffer"):
|
|
347
|
+
sys.stdout.flush()
|
|
348
|
+
sys.stdout.buffer.write(text.encode("utf-8"))
|
|
349
|
+
sys.stdout.buffer.flush()
|
|
342
350
|
else:
|
|
343
351
|
sys.stdout.write(text)
|
|
344
352
|
return 0
|