skillware 0.4.0__tar.gz → 0.4.2__tar.gz

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 (139) hide show
  1. {skillware-0.4.0/skillware.egg-info → skillware-0.4.2}/PKG-INFO +16 -2
  2. {skillware-0.4.0 → skillware-0.4.2}/README.md +15 -1
  3. {skillware-0.4.0 → skillware-0.4.2}/pyproject.toml +1 -1
  4. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/instructions.md +1 -1
  5. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/manifest.yaml +1 -1
  6. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/test_skill.py +2 -1
  7. skillware-0.4.2/skills/finance/uk_companies_house_handler/card.json +21 -0
  8. skillware-0.4.2/skills/finance/uk_companies_house_handler/data/api_index.json +127 -0
  9. skillware-0.4.2/skills/finance/uk_companies_house_handler/data/terminology_map.yaml +107 -0
  10. skillware-0.4.2/skills/finance/uk_companies_house_handler/instructions.md +73 -0
  11. skillware-0.4.2/skills/finance/uk_companies_house_handler/manifest.yaml +67 -0
  12. skillware-0.4.2/skills/finance/uk_companies_house_handler/skill.py +618 -0
  13. skillware-0.4.2/skills/finance/uk_companies_house_handler/test_skill.py +528 -0
  14. {skillware-0.4.0 → skillware-0.4.2}/skills/office/pdf_form_filler/manifest.yaml +1 -1
  15. {skillware-0.4.0 → skillware-0.4.2}/skills/office/pdf_form_filler/test_skill.py +1 -0
  16. {skillware-0.4.0 → skillware-0.4.2}/skillware/cli.py +68 -18
  17. skillware-0.4.2/skillware/core/__init__.py +0 -0
  18. {skillware-0.4.0 → skillware-0.4.2}/skillware/core/loader.py +121 -7
  19. {skillware-0.4.0 → skillware-0.4.2}/skillware/version_policy.py +4 -4
  20. {skillware-0.4.0 → skillware-0.4.2/skillware.egg-info}/PKG-INFO +16 -2
  21. {skillware-0.4.0 → skillware-0.4.2}/skillware.egg-info/SOURCES.txt +8 -0
  22. {skillware-0.4.0 → skillware-0.4.2}/tests/test_cli.py +5 -5
  23. {skillware-0.4.0 → skillware-0.4.2}/tests/test_loader.py +159 -1
  24. {skillware-0.4.0 → skillware-0.4.2}/tests/test_version_policy.py +21 -9
  25. {skillware-0.4.0 → skillware-0.4.2}/LICENSE +0 -0
  26. {skillware-0.4.0 → skillware-0.4.2}/MANIFEST.in +0 -0
  27. {skillware-0.4.0 → skillware-0.4.2}/setup.cfg +0 -0
  28. {skillware-0.4.0 → skillware-0.4.2}/skills/__init__.py +0 -0
  29. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/__init__.py +0 -0
  30. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/__init__.py +0 -0
  31. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/card.json +0 -0
  32. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/instructions.md +0 -0
  33. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/manifest.yaml +0 -0
  34. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/mica_corpus.json +0 -0
  35. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/skill.py +0 -0
  36. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/mica_module/test_skill.py +0 -0
  37. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/pii_masker/__init__.py +0 -0
  38. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/pii_masker/card.json +0 -0
  39. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/pii_masker/instructions.md +0 -0
  40. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/pii_masker/manifest.yaml +0 -0
  41. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/pii_masker/skill.py +0 -0
  42. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/pii_masker/test_skill.py +0 -0
  43. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/tos_evaluator/__init__.py +0 -0
  44. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/tos_evaluator/card.json +0 -0
  45. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/tos_evaluator/instructions.md +0 -0
  46. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/tos_evaluator/manifest.yaml +0 -0
  47. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/tos_evaluator/skill.py +0 -0
  48. {skillware-0.4.0 → skillware-0.4.2}/skills/compliance/tos_evaluator/test_skill.py +0 -0
  49. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/__init__.py +0 -0
  50. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/__init__.py +0 -0
  51. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/card.json +0 -0
  52. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/instructions.md +0 -0
  53. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/manifest.yaml +0 -0
  54. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/skill.py +0 -0
  55. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/novelty_extractor/test_skill.py +0 -0
  56. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/__init__.py +0 -0
  57. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/card.json +0 -0
  58. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/instructions.md +0 -0
  59. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/manifest.yaml +0 -0
  60. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/skill.py +0 -0
  61. {skillware-0.4.0 → skillware-0.4.2}/skills/data_engineering/synthetic_generator/test_skill.py +0 -0
  62. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/__init__.py +0 -0
  63. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/__init__.py +0 -0
  64. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/abis.py +0 -0
  65. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/card.json +0 -0
  66. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/config.yaml.example +0 -0
  67. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/data/addressbook.yaml +0 -0
  68. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/data/chains.yaml +0 -0
  69. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/data/tokens.yaml +0 -0
  70. {skillware-0.4.0 → skillware-0.4.2}/skills/defi/evm_tx_handler/skill.py +0 -0
  71. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/__init__.py +0 -0
  72. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/__init__.py +0 -0
  73. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/card.json +0 -0
  74. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/instructions.md +0 -0
  75. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/manifest.yaml +0 -0
  76. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/skill.py +0 -0
  77. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/test_skill.py +0 -0
  78. {skillware-0.4.0 → skillware-0.4.2}/skills/dev_tools/issue_resolver/workflow.py +0 -0
  79. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/__init__.py +0 -0
  80. {skillware-0.4.0/skills/office → skillware-0.4.2/skills/finance/uk_companies_house_handler}/__init__.py +0 -0
  81. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/__init__.py +0 -0
  82. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/card.json +0 -0
  83. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/data/entities.ftm.json +0 -0
  84. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/data/malicious_scs_2025.json +0 -0
  85. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_fbi_lazarus_20250722_180019.json +0 -0
  86. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_israel_nbctf_20250722_180019.json +0 -0
  87. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/data/normalized_uniswap_trm.json +0 -0
  88. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/instructions.md +0 -0
  89. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/maintenance/normalization_tool.py +0 -0
  90. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/maintenance/normalize_uniswap_trm.py +0 -0
  91. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/manifest.yaml +0 -0
  92. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/skill.py +0 -0
  93. {skillware-0.4.0 → skillware-0.4.2}/skills/finance/wallet_screening/test_skill.py +0 -0
  94. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/__init__.py +0 -0
  95. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/__init__.py +0 -0
  96. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/budget.py +0 -0
  97. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/card.json +0 -0
  98. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/data/model_pricing.json +0 -0
  99. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/instructions.md +0 -0
  100. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/manifest.yaml +0 -0
  101. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/skill.py +0 -0
  102. {skillware-0.4.0 → skillware-0.4.2}/skills/monitoring/token_limiter/test_skill.py +0 -0
  103. {skillware-0.4.0/skills/office/pdf_form_filler → skillware-0.4.2/skills/office}/__init__.py +0 -0
  104. {skillware-0.4.0/skills/optimization → skillware-0.4.2/skills/office/pdf_form_filler}/__init__.py +0 -0
  105. {skillware-0.4.0 → skillware-0.4.2}/skills/office/pdf_form_filler/card.json +0 -0
  106. {skillware-0.4.0 → skillware-0.4.2}/skills/office/pdf_form_filler/instructions.md +0 -0
  107. {skillware-0.4.0 → skillware-0.4.2}/skills/office/pdf_form_filler/skill.py +0 -0
  108. {skillware-0.4.0 → skillware-0.4.2}/skills/office/pdf_form_filler/utils.py +0 -0
  109. {skillware-0.4.0/skills/wellness → skillware-0.4.2/skills/optimization}/__init__.py +0 -0
  110. {skillware-0.4.0 → skillware-0.4.2}/skills/optimization/prompt_rewriter/__init__.py +0 -0
  111. {skillware-0.4.0 → skillware-0.4.2}/skills/optimization/prompt_rewriter/card.json +0 -0
  112. {skillware-0.4.0 → skillware-0.4.2}/skills/optimization/prompt_rewriter/instructions.md +0 -0
  113. {skillware-0.4.0 → skillware-0.4.2}/skills/optimization/prompt_rewriter/manifest.yaml +0 -0
  114. {skillware-0.4.0 → skillware-0.4.2}/skills/optimization/prompt_rewriter/skill.py +0 -0
  115. {skillware-0.4.0 → skillware-0.4.2}/skills/optimization/prompt_rewriter/test_skill.py +0 -0
  116. {skillware-0.4.0/skillware → skillware-0.4.2/skills/wellness}/__init__.py +0 -0
  117. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/__init__.py +0 -0
  118. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/card.json +0 -0
  119. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/constraints.py +0 -0
  120. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/crisis_gate.py +0 -0
  121. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/instructions.md +0 -0
  122. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/kb/corpus.json +0 -0
  123. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/kb/crisis_resources.json +0 -0
  124. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/kb/hard_constraints.yaml +0 -0
  125. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/kb_provider.py +0 -0
  126. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/manifest.yaml +0 -0
  127. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/resources.py +0 -0
  128. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/skill.py +0 -0
  129. {skillware-0.4.0 → skillware-0.4.2}/skills/wellness/mental_coach/test_skill.py +0 -0
  130. {skillware-0.4.0/skillware/core → skillware-0.4.2/skillware}/__init__.py +0 -0
  131. {skillware-0.4.0 → skillware-0.4.2}/skillware/__main__.py +0 -0
  132. {skillware-0.4.0 → skillware-0.4.2}/skillware/core/base_skill.py +0 -0
  133. {skillware-0.4.0 → skillware-0.4.2}/skillware/core/env.py +0 -0
  134. {skillware-0.4.0 → skillware-0.4.2}/skillware.egg-info/dependency_links.txt +0 -0
  135. {skillware-0.4.0 → skillware-0.4.2}/skillware.egg-info/entry_points.txt +0 -0
  136. {skillware-0.4.0 → skillware-0.4.2}/skillware.egg-info/requires.txt +0 -0
  137. {skillware-0.4.0 → skillware-0.4.2}/skillware.egg-info/top_level.txt +0 -0
  138. {skillware-0.4.0 → skillware-0.4.2}/tests/test_registry_docs.py +0 -0
  139. {skillware-0.4.0 → skillware-0.4.2}/tests/test_skill_issuer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skillware
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: A framework for modular, self-contained AI skills.
5
5
  Author-email: ARPA Hellenic Logical Systems <skillware-os@arpacorp.net>
6
6
  License: MIT License
@@ -88,6 +88,7 @@ Dynamic: license-file
88
88
 
89
89
  <div align="center">
90
90
  <a href="#mission">Mission</a> •
91
+ <a href="#how-it-works">How it works</a> •
91
92
  <a href="#architecture">Architecture</a> •
92
93
  <a href="#quick-start">Quick Start</a> •
93
94
  <a href="#documentation">Documentation</a> •
@@ -119,6 +120,18 @@ A **Skill** in this framework provides everything an Agent needs to master a dom
119
120
 
120
121
  Browse capabilities by category in the [Skill library](docs/skills/README.md) or on our <a href="https://skillware.site/skills" target="_blank" rel="noopener noreferrer">site&nbsp;↗</a>.
121
122
 
123
+ ## How it works
124
+
125
+ ```mermaid
126
+ flowchart LR
127
+ Registry[Registry] -->|Load| Loader[Loader]
128
+ Loader -->|Adapt| Host[Host]
129
+ Host -->|Prompt + Tools| LogicalSystems([Logical Systems])
130
+ LogicalSystems -->|Tool Call| Host
131
+ ```
132
+
133
+ Install the registry once. Skillware loads a bundle and adapts it to your model's tool format — you run the loop. For details on how the loader turns the manifest into a tool, see the [Introduction](docs/introduction.md).
134
+
122
135
  ## Architecture
123
136
 
124
137
  This repository is organized into a core framework, a registry of skills, and
@@ -225,9 +238,10 @@ load_env_file()
225
238
  # 1. Load the Skill from the Registry
226
239
  # The loader reads the code, manifest, and instructions automatically
227
240
  skill_bundle = SkillLoader.load_skill("finance/wallet_screening")
228
- skill = skill_bundle["module"].WalletScreeningSkill(
241
+ skill = skill_bundle["class"](
229
242
  config={"ETHERSCAN_API_KEY": os.environ.get("ETHERSCAN_API_KEY")}
230
243
  )
244
+ # Or: skill = skill_bundle["module"].WalletScreeningSkill(config={...})
231
245
 
232
246
  # 2. Client & Tool Setup
233
247
  client = genai.Client()
@@ -17,6 +17,7 @@
17
17
 
18
18
  <div align="center">
19
19
  <a href="#mission">Mission</a> •
20
+ <a href="#how-it-works">How it works</a> •
20
21
  <a href="#architecture">Architecture</a> •
21
22
  <a href="#quick-start">Quick Start</a> •
22
23
  <a href="#documentation">Documentation</a> •
@@ -48,6 +49,18 @@ A **Skill** in this framework provides everything an Agent needs to master a dom
48
49
 
49
50
  Browse capabilities by category in the [Skill library](docs/skills/README.md) or on our <a href="https://skillware.site/skills" target="_blank" rel="noopener noreferrer">site&nbsp;↗</a>.
50
51
 
52
+ ## How it works
53
+
54
+ ```mermaid
55
+ flowchart LR
56
+ Registry[Registry] -->|Load| Loader[Loader]
57
+ Loader -->|Adapt| Host[Host]
58
+ Host -->|Prompt + Tools| LogicalSystems([Logical Systems])
59
+ LogicalSystems -->|Tool Call| Host
60
+ ```
61
+
62
+ Install the registry once. Skillware loads a bundle and adapts it to your model's tool format — you run the loop. For details on how the loader turns the manifest into a tool, see the [Introduction](docs/introduction.md).
63
+
51
64
  ## Architecture
52
65
 
53
66
  This repository is organized into a core framework, a registry of skills, and
@@ -154,9 +167,10 @@ load_env_file()
154
167
  # 1. Load the Skill from the Registry
155
168
  # The loader reads the code, manifest, and instructions automatically
156
169
  skill_bundle = SkillLoader.load_skill("finance/wallet_screening")
157
- skill = skill_bundle["module"].WalletScreeningSkill(
170
+ skill = skill_bundle["class"](
158
171
  config={"ETHERSCAN_API_KEY": os.environ.get("ETHERSCAN_API_KEY")}
159
172
  )
173
+ # Or: skill = skill_bundle["module"].WalletScreeningSkill(config={...})
160
174
 
161
175
  # 2. Client & Tool Setup
162
176
  client = genai.Client()
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "skillware"
7
- version = "0.4.0"
7
+ version = "0.4.2"
8
8
  description = "A framework for modular, self-contained AI skills."
9
9
  readme = "README.md"
10
10
  authors = [
@@ -1,6 +1,6 @@
1
1
  # EVM Transaction Handler
2
2
 
3
- You are equipped with **`evm_tx_handler`**: a deterministic EVM tool for a **dedicated agent wallet** on Ethereum and Base.
3
+ You are equipped with **`defi/evm_tx_handler`**: a deterministic EVM tool for a **dedicated agent wallet** on Ethereum and Base.
4
4
 
5
5
  ## Your job vs the skill's job
6
6
 
@@ -1,4 +1,4 @@
1
- name: evm_tx_handler
1
+ name: defi/evm_tx_handler
2
2
  version: 0.2.0
3
3
  description: |
4
4
  Operates a dedicated EVM agent wallet for structured buy/sell on Ethereum and Base:
@@ -81,12 +81,13 @@ def manifest():
81
81
 
82
82
  def test_manifest_consistency(skill, manifest):
83
83
  assert skill.manifest["name"] == manifest["name"]
84
+ assert manifest["name"] == "defi/evm_tx_handler"
84
85
 
85
86
 
86
87
  def test_loader_loads_skill(monkeypatch):
87
88
  monkeypatch.setenv("AGENT_WALLET_PRIVATE_KEY", TEST_KEY)
88
89
  bundle = SkillLoader.load_skill("defi/evm_tx_handler")
89
- assert bundle["manifest"]["name"] == "evm_tx_handler"
90
+ assert bundle["manifest"]["name"] == "defi/evm_tx_handler"
90
91
  cls = bundle["module"].EvmTxHandlerSkill
91
92
  instance = cls()
92
93
  assert (
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "UK Companies House Handler",
3
+ "description": "Search, profile, officers, PSC, and filing history for UK-registered companies via Companies House API.",
4
+ "issuer": {
5
+ "name": "Areen Agrawal",
6
+ "email": "agrawalareen09@gmail.com",
7
+ "github": "Areen-09",
8
+ "org": "ARPAHLS"
9
+ },
10
+ "icon": "building-columns",
11
+ "color": "teal",
12
+ "ui_schema": {
13
+ "type": "card",
14
+ "fields": [
15
+ {"key": "status", "label": "Status", "type": "status_badge"},
16
+ {"key": "company_number", "label": "Company No."},
17
+ {"key": "company_name", "label": "Company Name"},
18
+ {"key": "company_status", "label": "Company Status", "type": "status_badge"}
19
+ ]
20
+ }
21
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "base_url": "https://api.company-information.service.gov.uk",
3
+ "auth": {
4
+ "method": "http_basic",
5
+ "username": "api_key",
6
+ "password": "empty",
7
+ "docs": "https://developer.company-information.service.gov.uk/"
8
+ },
9
+ "rate_limit": {
10
+ "requests_per_five_minutes": 600,
11
+ "note": "Rate limits apply per API key. 429 responses indicate throttling."
12
+ },
13
+ "endpoints": {
14
+ "search_companies": {
15
+ "method": "GET",
16
+ "path": "/search/companies",
17
+ "description": "Search for companies by name or number.",
18
+ "params": {
19
+ "q": {
20
+ "type": "string",
21
+ "required": true,
22
+ "description": "Company name or number search query"
23
+ },
24
+ "items_per_page": {
25
+ "type": "integer",
26
+ "required": false,
27
+ "default": 20,
28
+ "max": 100,
29
+ "description": "Number of results per page"
30
+ },
31
+ "start_index": {
32
+ "type": "integer",
33
+ "required": false,
34
+ "default": 0,
35
+ "description": "Offset for pagination"
36
+ }
37
+ },
38
+ "response_key": "items"
39
+ },
40
+ "get_company_profile": {
41
+ "method": "GET",
42
+ "path": "/company/{company_number}",
43
+ "description": "Get the full profile for a specific company.",
44
+ "params": {},
45
+ "response_key": null
46
+ },
47
+ "get_officers": {
48
+ "method": "GET",
49
+ "path": "/company/{company_number}/officers",
50
+ "description": "List officers (directors, secretaries) for a company.",
51
+ "params": {
52
+ "items_per_page": {
53
+ "type": "integer",
54
+ "required": false,
55
+ "description": "Number of results per page"
56
+ },
57
+ "start_index": {
58
+ "type": "integer",
59
+ "required": false,
60
+ "description": "Offset for pagination"
61
+ },
62
+ "order_by": {
63
+ "type": "string",
64
+ "required": false,
65
+ "enum": ["appointed_on", "resigned_on", "surname"],
66
+ "description": "Sort order for results"
67
+ }
68
+ },
69
+ "response_key": "items"
70
+ },
71
+ "get_pscs": {
72
+ "method": "GET",
73
+ "path": "/company/{company_number}/persons-with-significant-control",
74
+ "description": "List persons with significant control (beneficial owners).",
75
+ "params": {
76
+ "items_per_page": {
77
+ "type": "integer",
78
+ "required": false,
79
+ "description": "Number of results per page"
80
+ },
81
+ "start_index": {
82
+ "type": "integer",
83
+ "required": false,
84
+ "description": "Offset for pagination"
85
+ },
86
+ "register_view": {
87
+ "type": "boolean",
88
+ "required": false,
89
+ "description": "Show only active PSCs when true"
90
+ }
91
+ },
92
+ "response_key": "items"
93
+ },
94
+ "get_filing_history": {
95
+ "method": "GET",
96
+ "path": "/company/{company_number}/filing-history",
97
+ "description": "List filing history for a company.",
98
+ "params": {
99
+ "category": {
100
+ "type": "string",
101
+ "required": false,
102
+ "description": "Filter by filing category (e.g. accounts, confirmation-statement)"
103
+ },
104
+ "items_per_page": {
105
+ "type": "integer",
106
+ "required": false,
107
+ "description": "Number of results per page"
108
+ },
109
+ "start_index": {
110
+ "type": "integer",
111
+ "required": false,
112
+ "description": "Offset for pagination"
113
+ }
114
+ },
115
+ "response_key": "items"
116
+ }
117
+ },
118
+ "v2_planned": [
119
+ "charges",
120
+ "registers",
121
+ "insolvency",
122
+ "document_metadata",
123
+ "document_fetch",
124
+ "search_officers",
125
+ "search_disqualified_officers"
126
+ ]
127
+ }
@@ -0,0 +1,107 @@
1
+ # Maps common (often US-centric) business terms to their UK Companies House
2
+ # equivalents. The skill and instructions.md reference this so agents do not
3
+ # hallucinate wrong roles or entity types.
4
+
5
+ role_mappings:
6
+ ceo: director
7
+ chief_executive_officer: director
8
+ chief_executive: director
9
+ president: director
10
+ chairman: director
11
+ chairwoman: director
12
+ chairperson: director
13
+ board_member: director
14
+ managing_director: director
15
+ executive_director: director
16
+ non_executive_director: director
17
+ cfo: director
18
+ cto: director
19
+ coo: director
20
+ secretary: secretary
21
+ company_secretary: secretary
22
+ corporate_secretary: secretary
23
+ owner: person_with_significant_control
24
+ shareholder: person_with_significant_control
25
+ beneficial_owner: person_with_significant_control
26
+ stakeholder: person_with_significant_control
27
+ majority_owner: person_with_significant_control
28
+ controlling_shareholder: person_with_significant_control
29
+ partner: llp_designated_member
30
+ general_partner: llp_designated_member
31
+ limited_partner: llp_member
32
+
33
+ entity_types:
34
+ corporation: ltd
35
+ inc: ltd
36
+ incorporated: ltd
37
+ limited: ltd
38
+ llc: ltd
39
+ co: ltd
40
+ company: ltd
41
+ public_company: plc
42
+ public_limited_company: plc
43
+ partnership: llp
44
+ limited_liability_partnership: llp
45
+ limited_partnership: lp
46
+ community_interest_company: cic
47
+ charity: charitable-incorporated-organisation
48
+
49
+ status_mappings:
50
+ operating: active
51
+ open: active
52
+ running: active
53
+ trading: active
54
+ closed: dissolved
55
+ shutdown: dissolved
56
+ bankrupt: liquidation
57
+ insolvent: liquidation
58
+ in_administration: administration
59
+ winding_up: liquidation
60
+ struck_off: dissolved
61
+ dormant: dormant
62
+
63
+ document_types:
64
+ annual_report: annual-return
65
+ 10k: accounts
66
+ 10q: confirmation-statement
67
+ financial_statements: accounts
68
+ balance_sheet: accounts
69
+ income_statement: accounts
70
+ articles: incorporation
71
+ articles_of_incorporation: incorporation
72
+ bylaws: incorporation
73
+ charter: incorporation
74
+ annual_filing: confirmation-statement
75
+ registration: incorporation
76
+
77
+ # Maps user intent keywords to the appropriate skill action
78
+ intent_to_action:
79
+ search: resolve_company
80
+ find: resolve_company
81
+ lookup: resolve_company
82
+ look_up: resolve_company
83
+ who_is: get_officers
84
+ directors: get_officers
85
+ officers: get_officers
86
+ board: get_officers
87
+ management: get_officers
88
+ leadership: get_officers
89
+ ceo: get_officers
90
+ owner: get_pscs
91
+ owners: get_pscs
92
+ ownership: get_pscs
93
+ shareholder: get_pscs
94
+ shareholders: get_pscs
95
+ beneficial_owner: get_pscs
96
+ psc: get_pscs
97
+ filings: get_filing_history
98
+ filing: get_filing_history
99
+ accounts: get_filing_history
100
+ annual_return: get_filing_history
101
+ documents: get_filing_history
102
+ profile: get_company_profile
103
+ details: get_company_profile
104
+ info: get_company_profile
105
+ information: get_company_profile
106
+ status: get_company_profile
107
+ registered: get_company_profile
@@ -0,0 +1,73 @@
1
+ # UK Companies House Handler — Instructions
2
+
3
+ You are an agent equipped with the `finance/uk_companies_house_handler` skill. This tool lets you query the UK Companies House registry for company information, officers, ownership, and filing history through structured actions.
4
+
5
+ ## When to use
6
+
7
+ Use this skill when the user:
8
+
9
+ - Asks about a UK company (registered in England, Wales, Scotland, or Northern Ireland).
10
+ - Wants to know who runs, owns, or controls a UK company.
11
+ - Asks about directors, officers, or "the CEO" of a UK company.
12
+ - Requests filing history, accounts, or annual returns for a UK company.
13
+ - Mentions "Companies House" or refers to a UK company number (8 characters, e.g. 00102498).
14
+ - Asks about beneficial owners, PSCs, or persons with significant control.
15
+
16
+ ## UK Terminology — Critical
17
+
18
+ UK companies do **not** use the term "CEO" in a legal sense. When a user says "CEO", "president", or "chairman", you should look up **directors** via the `get_officers` action. The skill includes a terminology map:
19
+
20
+ | User says | UK equivalent | Skill action |
21
+ | :--- | :--- | :--- |
22
+ | CEO, president, chairman | Director | `get_officers` |
23
+ | Owner, shareholder, beneficial owner | Person with Significant Control (PSC) | `get_pscs` |
24
+ | Secretary, corporate secretary | Secretary | `get_officers` |
25
+ | Annual report, 10-K, financials | Accounts / Confirmation Statement | `get_filing_history` |
26
+ | Company, corporation, LLC | Ltd, PLC, LLP | `resolve_company` |
27
+
28
+ Always inform the user about these terminology differences when presenting results.
29
+
30
+ ## Available actions
31
+
32
+ | Action | Purpose | Required params |
33
+ | :--- | :--- | :--- |
34
+ | `resolve_company` | Search by name, get ranked candidates | `query` |
35
+ | `get_company_profile` | Full profile by company number | `company_number` |
36
+ | `get_officers` | List directors and secretaries | `company_number` |
37
+ | `get_pscs` | List persons with significant control | `company_number` |
38
+ | `get_filing_history` | List filings (accounts, returns, etc.) | `company_number` |
39
+ | `map_intent` | Translate intent keywords to action pipeline | `intent_keywords` or `entities` |
40
+
41
+ ## Workflow — Always map intent first
42
+
43
+ 1. **Always map intent first.** For every new user request, you MUST start by calling the `map_intent` action with the user's `intent_keywords` (as a comma-separated string) and `entities` (if applicable).
44
+ 2. Read the `suggested_pipeline` returned by the `map_intent` action.
45
+ 3. Follow the actions exactly as ordered in the `suggested_pipeline`.
46
+ 4. If a step (like `resolve_company`) returns a status of `needs_input`, present the candidates to the user and wait for their choice before proceeding.
47
+ 5. Once you have a confirmed `company_number`, continue with the remaining specific actions (`get_officers`, `get_pscs`, etc.) in your pipeline.
48
+
49
+ ## Understanding responses
50
+
51
+ Every response includes a `status` field:
52
+
53
+ - **`ready`**: The data was fetched successfully. Present it to the user.
54
+ - **`needs_input`**: Multiple matches or missing information. Present the `candidates` to the user and ask for clarification. Use the `agent_hint` for guidance.
55
+ - **`error`**: Something went wrong. Check `error_code` and `message`. Common errors:
56
+ - `not_found`: Company number does not exist.
57
+ - `rate_limited`: Too many requests; wait and retry.
58
+ - `missing_company_number`: You need to resolve a company first.
59
+
60
+ Every response includes `fetched_at` (UTC timestamp) and `source` — always cite these when presenting data.
61
+
62
+ ## Limitations
63
+
64
+ - **v1 scope only**: Search, profile, officers, PSC, and filing history. Charges, insolvency registers, and document downloads are not yet supported.
65
+ - **No filing submission**: This skill is read-only; it cannot submit documents to Companies House.
66
+ - **Rate limits**: Companies House API allows 600 requests per 5 minutes per key.
67
+ - **Public data only**: Only publicly available data is returned. No confidential or protected information.
68
+
69
+ ## Safety
70
+
71
+ - This skill provides company information. **It is not legal or accounting advice.**
72
+ - Always include this disclaimer when presenting company data to users.
73
+ - Always cite the `company_number` and `fetched_at` timestamp so the user knows the data source and currency.
@@ -0,0 +1,67 @@
1
+ name: finance/uk_companies_house_handler
2
+ version: 1.0.0
3
+ description: |
4
+ Deterministic UK Companies House API handler for agents. Provides structured
5
+ operations for company search, profile lookup, officer and PSC listing, filing
6
+ history, and intent-to-operation mapping with UK corporate terminology
7
+ translation. Returns status-based responses (ready, needs_input, error) with
8
+ disambiguation support. The agent owns natural-language dialogue; the skill
9
+ returns structured candidates and next actions.
10
+ short_description: "UK Companies House search, officers, PSC, and filings via structured actions."
11
+ issuer:
12
+ name: Areen Agrawal
13
+ email: agrawalareen09@gmail.com
14
+ github: Areen-09
15
+ org: ARPAHLS
16
+ parameters:
17
+ type: object
18
+ properties:
19
+ action:
20
+ type: string
21
+ description: >
22
+ The operation to perform. One of: resolve_company, get_company_profile,
23
+ get_officers, get_pscs, get_filing_history, map_intent.
24
+ enum:
25
+ - resolve_company
26
+ - get_company_profile
27
+ - get_officers
28
+ - get_pscs
29
+ - get_filing_history
30
+ - map_intent
31
+ query:
32
+ type: string
33
+ description: "Company name or partial name for search (resolve_company)."
34
+ company_number:
35
+ type: string
36
+ description: "8-character UK company number (required for profile/officers/pscs/filing)."
37
+ active_only:
38
+ type: boolean
39
+ description: "Filter to current/active records only. Default false."
40
+ limit:
41
+ type: integer
42
+ description: "Max results to return (resolve_company). Default 5."
43
+ category:
44
+ type: string
45
+ description: "Filing category filter (get_filing_history)."
46
+ intent_keywords:
47
+ type: string
48
+ description: "Comma-separated keywords from user intent for map_intent action."
49
+ entities:
50
+ type: object
51
+ description: "Extracted entities for map_intent (e.g. company_query, role)."
52
+ required:
53
+ - action
54
+ constitution: |
55
+ 1. Use only publicly available Companies House data.
56
+ 2. Require COMPANIES_HOUSE_API_KEY via environment; never hardcode or log the key.
57
+ 3. Do not cache personal data (officer names, addresses) beyond the current request.
58
+ 4. Always cite company_number and data timestamp (fetched_at) in responses.
59
+ 5. Never guess a company number; return ranked search hits when ambiguous.
60
+ 6. This skill provides company information, not legal or accounting advice.
61
+ 7. Do not submit filings or modify Companies House records.
62
+ env_vars:
63
+ COMPANIES_HOUSE_API_KEY:
64
+ description: "API key from the Companies House Developer Hub. Used as HTTP Basic username with empty password."
65
+ required: true
66
+ requirements:
67
+ - requests