@opendirectory.dev/skills 0.1.39 → 0.1.41
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/registry.json +16 -0
- package/skills/product-update-logger/.env.example +4 -0
- package/skills/product-update-logger/README.md +197 -0
- package/skills/product-update-logger/SKILL.md +462 -0
- package/skills/product-update-logger/evals/evals.json +119 -0
- package/skills/product-update-logger/references/changelog-format.md +96 -0
- package/skills/product-update-logger/references/content-rules.md +154 -0
- package/skills/product-update-logger/references/noise-filter.md +86 -0
- package/skills/product-update-logger/scripts/gather.py +364 -0
- package/skills/vc-curated-match/README.md +42 -0
- package/skills/vc-curated-match/SKILL.md +59 -0
- package/skills/vc-curated-match/data/vc_funds.json +277 -0
- package/skills/vc-curated-match/evals/ai-b2b-saas-seed.md +141 -0
- package/skills/vc-curated-match/evals/devtool-oss-seed.md +141 -0
- package/skills/vc-curated-match/evals/evals.json +43 -0
- package/skills/vc-curated-match/evals/fintech-india-preseed.md +142 -0
- package/skills/vc-curated-match/evals/varnan-seed.md +141 -0
- package/skills/vc-curated-match/scripts/fetch_product_context.py +80 -0
- package/skills/vc-curated-match/scripts/generate_report.py +111 -0
- package/skills/vc-curated-match/scripts/match_vcs.py +127 -0
- package/skills/vc-curated-match/scripts/run.py +82 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import sys
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
# Import the core pipeline components
|
|
6
|
+
from fetch_product_context import get_product_context
|
|
7
|
+
from match_vcs import match_vcs
|
|
8
|
+
from generate_report import generate_report
|
|
9
|
+
|
|
10
|
+
def main():
|
|
11
|
+
parser = argparse.ArgumentParser(description="vc-curated-match: Algorithmically identify relevant VCs based on product context.")
|
|
12
|
+
|
|
13
|
+
parser.add_argument("--description", required=True, help="Product description string.")
|
|
14
|
+
parser.add_argument("--url", required=True, help="Product homepage or GitHub URL.")
|
|
15
|
+
parser.add_argument("--stage", default=None, help="Optional startup stage hint.")
|
|
16
|
+
parser.add_argument("--geography", default=None, help="Optional target geography (Defaults to Global inference).")
|
|
17
|
+
parser.add_argument("--output", default="vc-matches.md", help="Output file path (Defaults to vc-matches.md).")
|
|
18
|
+
|
|
19
|
+
args = parser.parse_args()
|
|
20
|
+
|
|
21
|
+
# Validation
|
|
22
|
+
if not args.description or not args.description.strip():
|
|
23
|
+
print("Error: --description must not be empty or whitespace only.", file=sys.stderr)
|
|
24
|
+
sys.exit(1)
|
|
25
|
+
|
|
26
|
+
if not args.url or not args.url.strip():
|
|
27
|
+
print("Error: --url must not be empty.", file=sys.stderr)
|
|
28
|
+
sys.exit(1)
|
|
29
|
+
|
|
30
|
+
# Validate dataset existence per requirements
|
|
31
|
+
data_path = os.path.join(os.path.dirname(__file__), "..", "data", "vc_funds.json")
|
|
32
|
+
if not os.path.exists(data_path):
|
|
33
|
+
print("Error: data/vc_funds.json not found. Make sure you are running from the skill root directory.", file=sys.stderr)
|
|
34
|
+
sys.exit(1)
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
stage_input = args.stage.strip() if args.stage else None
|
|
38
|
+
if stage_input and stage_input.lower() == "pre-seed":
|
|
39
|
+
stage_input = "Pre-seed"
|
|
40
|
+
elif stage_input:
|
|
41
|
+
stage_input = stage_input.capitalize()
|
|
42
|
+
|
|
43
|
+
# 1. Fetch Product Context
|
|
44
|
+
product_context = get_product_context(
|
|
45
|
+
description=args.description.strip(),
|
|
46
|
+
url=args.url.strip(),
|
|
47
|
+
stage=stage_input,
|
|
48
|
+
geography=args.geography.strip() if args.geography else None
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
# 2. Match VCs
|
|
52
|
+
matches = match_vcs(product_context, data_path=data_path)
|
|
53
|
+
|
|
54
|
+
# 3. Generate Report
|
|
55
|
+
report_str = generate_report(matches, product_context)
|
|
56
|
+
|
|
57
|
+
# Ensure output directory exists and write
|
|
58
|
+
output_dir = os.path.dirname(os.path.abspath(args.output))
|
|
59
|
+
if output_dir:
|
|
60
|
+
os.makedirs(output_dir, exist_ok=True)
|
|
61
|
+
|
|
62
|
+
try:
|
|
63
|
+
with open(args.output, "w", encoding="utf-8") as f:
|
|
64
|
+
f.write(report_str)
|
|
65
|
+
except IOError:
|
|
66
|
+
print(f"Error: Could not write to {args.output}.", file=sys.stderr)
|
|
67
|
+
sys.exit(1)
|
|
68
|
+
|
|
69
|
+
# 4. Generate Summary Console Print
|
|
70
|
+
high = sum(1 for m in matches if m.get("confidence") == "High")
|
|
71
|
+
medium = sum(1 for m in matches if m.get("confidence") == "Medium")
|
|
72
|
+
low = sum(1 for m in matches if m.get("confidence") == "Low")
|
|
73
|
+
|
|
74
|
+
print(f"Done. Report saved to {args.output}")
|
|
75
|
+
print(f"Found {len(matches)} matches: {high} High, {medium} Medium, {low} Low confidence")
|
|
76
|
+
|
|
77
|
+
except Exception as e:
|
|
78
|
+
print(f"Error: {str(e)}", file=sys.stderr)
|
|
79
|
+
sys.exit(1)
|
|
80
|
+
|
|
81
|
+
if __name__ == "__main__":
|
|
82
|
+
main()
|