skillware 0.5.0__tar.gz → 0.5.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.
- {skillware-0.5.0/skillware.egg-info → skillware-0.5.2}/PKG-INFO +17 -5
- {skillware-0.5.0 → skillware-0.5.2}/README.md +1 -1
- {skillware-0.5.0 → skillware-0.5.2}/pyproject.toml +22 -3
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/uk_companies_house_handler/data/terminology_map.yaml +11 -0
- skillware-0.5.2/skills/finance/uk_companies_house_handler/instructions.md +85 -0
- skillware-0.5.2/skills/finance/uk_companies_house_handler/manifest.yaml +140 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/uk_companies_house_handler/skill.py +451 -50
- skillware-0.5.2/skills/finance/uk_companies_house_handler/test_skill.py +1540 -0
- skillware-0.5.2/skills/office/gmail_handler/attachments.py +153 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/card.json +1 -1
- skillware-0.5.2/skills/office/gmail_handler/data/config.yaml.example +21 -0
- skillware-0.5.2/skills/office/gmail_handler/file_ref.py +165 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/instructions.md +29 -6
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/mail.py +39 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/manifest.yaml +46 -10
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/skill.py +281 -40
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/test_skill.py +165 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/card.json +57 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/guard.py +585 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/instructions.md +55 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/kb/deception_lexicon.json +204 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/manifest.yaml +83 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/skill.py +59 -0
- skillware-0.5.2/skills/security/deceptive_ui_guard/test_skill.py +179 -0
- skillware-0.5.2/skillware/branding/skillware_logo.png +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/cli.py +208 -5
- skillware-0.5.2/skillware/cli_mail.py +743 -0
- skillware-0.5.2/skillware/core/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/config.py +17 -4
- skillware-0.5.2/skillware/core/mail_config.py +907 -0
- {skillware-0.5.0 → skillware-0.5.2/skillware.egg-info}/PKG-INFO +17 -5
- {skillware-0.5.0 → skillware-0.5.2}/skillware.egg-info/SOURCES.txt +15 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware.egg-info/requires.txt +2 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_cli.py +63 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_config.py +40 -0
- skillware-0.5.2/tests/test_github_labels.py +132 -0
- skillware-0.5.2/tests/test_mail_config.py +254 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_registry_docs.py +35 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_version_policy.py +1 -1
- skillware-0.5.0/skills/finance/uk_companies_house_handler/instructions.md +0 -75
- skillware-0.5.0/skills/finance/uk_companies_house_handler/manifest.yaml +0 -73
- skillware-0.5.0/skills/finance/uk_companies_house_handler/test_skill.py +0 -650
- skillware-0.5.0/tests/test_github_labels.py +0 -64
- {skillware-0.5.0 → skillware-0.5.2}/LICENSE +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/MANIFEST.in +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/setup.cfg +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/mica_corpus.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/mica_module/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/pii_masker/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/pii_masker/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/pii_masker/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/pii_masker/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/pii_masker/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/pii_masker/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/tos_evaluator/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/tos_evaluator/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/tos_evaluator/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/tos_evaluator/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/tos_evaluator/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/compliance/tos_evaluator/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/bg_remover/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/bg_remover/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/bg_remover/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/bg_remover/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/bg_remover/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/creative/bg_remover/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/novelty_extractor/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/novelty_extractor/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/novelty_extractor/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/novelty_extractor/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/novelty_extractor/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/novelty_extractor/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/synthetic_generator/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/synthetic_generator/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/synthetic_generator/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/synthetic_generator/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/synthetic_generator/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/data_engineering/synthetic_generator/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/abis.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/config.yaml.example +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/data/addressbook.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/data/chains.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/data/tokens.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/defi/evm_tx_handler/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/dev_tools/issue_resolver/workflow.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/uk_companies_house_handler/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/uk_companies_house_handler/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/uk_companies_house_handler/data/api_index.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/data/entities.ftm.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/data/malicious_scs_2025.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/data/normalized_fbi_lazarus_20250722_180019.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/data/normalized_israel_nbctf_20250722_180019.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/data/normalized_uniswap_trm.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/maintenance/normalization_tool.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/maintenance/normalize_uniswap_trm.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/finance/wallet_screening/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/budget.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/data/model_pricing.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/monitoring/token_limiter/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/addressbook.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/data/.gitignore +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/gmail_handler/data/addressbook.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/office/pdf_form_filler/utils.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/prompt_rewriter/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/prompt_rewriter/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/prompt_rewriter/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/prompt_rewriter/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/prompt_rewriter/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/optimization/prompt_rewriter/test_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/__init__.py +0 -0
- {skillware-0.5.0/skills/security/prompt_injection_firewall → skillware-0.5.2/skills/security/deceptive_ui_guard}/__init__.py +0 -0
- {skillware-0.5.0/skills/wellness → skillware-0.5.2/skills/security/prompt_injection_firewall}/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/firewall.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/kb/confusables.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/kb/injection_patterns.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/security/prompt_injection_firewall/test_skill.py +0 -0
- {skillware-0.5.0/skillware → skillware-0.5.2/skills/wellness}/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/card.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/constraints.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/crisis_gate.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/instructions.md +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/kb/corpus.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/kb/crisis_resources.json +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/kb/hard_constraints.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/kb_provider.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/manifest.yaml +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/resources.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skills/wellness/mental_coach/test_skill.py +0 -0
- {skillware-0.5.0/skillware/core → skillware-0.5.2/skillware}/__init__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/__main__.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/base_skill.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/discovery.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/env.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/extras.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/loader.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/core/ui_schema.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware/version_policy.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware.egg-info/dependency_links.txt +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware.egg-info/entry_points.txt +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/skillware.egg-info/top_level.txt +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_card_ui_schema.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_discovery.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_extras_sync.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_loader.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_registry_identity.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_requirements_check.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_skill_issuer.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_ui_schema.py +0 -0
- {skillware-0.5.0 → skillware-0.5.2}/tests/test_validate_params.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: skillware
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.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
|
|
@@ -25,12 +25,23 @@ License: MIT License
|
|
|
25
25
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
26
|
SOFTWARE.
|
|
27
27
|
|
|
28
|
-
Project-URL: Homepage, https://
|
|
29
|
-
Project-URL: Repository, https://github.com/
|
|
28
|
+
Project-URL: Homepage, https://skillware.site
|
|
29
|
+
Project-URL: Repository, https://github.com/ARPAHLS/skillware
|
|
30
|
+
Project-URL: Documentation, https://github.com/ARPAHLS/skillware/blob/main/docs/introduction.md
|
|
31
|
+
Project-URL: Issues, https://github.com/ARPAHLS/skillware/issues
|
|
32
|
+
Project-URL: Changelog, https://github.com/ARPAHLS/skillware/blob/main/CHANGELOG.md
|
|
30
33
|
Project-URL: DOI, https://doi.org/10.5281/zenodo.21552745
|
|
31
|
-
|
|
34
|
+
Keywords: ai,agents,skills,llm,tools,framework,agent-tools,registry
|
|
35
|
+
Classifier: Development Status :: 4 - Beta
|
|
36
|
+
Classifier: Intended Audience :: Developers
|
|
32
37
|
Classifier: License :: OSI Approved :: MIT License
|
|
33
38
|
Classifier: Operating System :: OS Independent
|
|
39
|
+
Classifier: Programming Language :: Python :: 3
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
41
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
42
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
43
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
44
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
34
45
|
Requires-Python: >=3.10
|
|
35
46
|
Description-Content-Type: text/markdown
|
|
36
47
|
License-File: LICENSE
|
|
@@ -100,6 +111,7 @@ Provides-Extra: office-pdf-form-filler
|
|
|
100
111
|
Requires-Dist: pymupdf; extra == "office-pdf-form-filler"
|
|
101
112
|
Requires-Dist: anthropic; extra == "office-pdf-form-filler"
|
|
102
113
|
Provides-Extra: optimization-prompt-rewriter
|
|
114
|
+
Provides-Extra: security-deceptive-ui-guard
|
|
103
115
|
Provides-Extra: security-prompt-injection-firewall
|
|
104
116
|
Provides-Extra: wellness-mental-coach
|
|
105
117
|
Requires-Dist: google-genai; extra == "wellness-mental-coach"
|
|
@@ -380,7 +392,7 @@ PyPI download counts show how often `skillware` is installed from the package in
|
|
|
380
392
|
|
|
381
393
|
<a href="https://doi.org/10.5281/zenodo.21552745"><img src="https://img.shields.io/badge/DOI-10.5281%2Fzenodo.21552745-c7d2fe?style=flat-square" alt="DOI 10.5281/zenodo.21552745"></a>
|
|
382
394
|
|
|
383
|
-
If you use Skillware in research or products, please cite it using [CITATION.cff](CITATION.cff) (GitHub **Cite this repository**) or the Zenodo **concept DOI** above. That DOI is stable across releases. For reproducibility, also record the **Skillware version** you used (PyPI or Git tag, for example `0.5.
|
|
395
|
+
If you use Skillware in research or products, please cite it using [CITATION.cff](CITATION.cff) (GitHub **Cite this repository**) or the Zenodo **concept DOI** above. That DOI is stable across releases. For reproducibility, also record the **Skillware version** you used (PyPI or Git tag, for example `0.5.2`).
|
|
384
396
|
|
|
385
397
|
## Contact
|
|
386
398
|
|
|
@@ -263,7 +263,7 @@ PyPI download counts show how often `skillware` is installed from the package in
|
|
|
263
263
|
|
|
264
264
|
<a href="https://doi.org/10.5281/zenodo.21552745"><img src="https://img.shields.io/badge/DOI-10.5281%2Fzenodo.21552745-c7d2fe?style=flat-square" alt="DOI 10.5281/zenodo.21552745"></a>
|
|
265
265
|
|
|
266
|
-
If you use Skillware in research or products, please cite it using [CITATION.cff](CITATION.cff) (GitHub **Cite this repository**) or the Zenodo **concept DOI** above. That DOI is stable across releases. For reproducibility, also record the **Skillware version** you used (PyPI or Git tag, for example `0.5.
|
|
266
|
+
If you use Skillware in research or products, please cite it using [CITATION.cff](CITATION.cff) (GitHub **Cite this repository**) or the Zenodo **concept DOI** above. That DOI is stable across releases. For reproducibility, also record the **Skillware version** you used (PyPI or Git tag, for example `0.5.2`).
|
|
267
267
|
|
|
268
268
|
## Contact
|
|
269
269
|
|
|
@@ -4,18 +4,24 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "skillware"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.2"
|
|
8
8
|
description = "A framework for modular, self-contained AI skills."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
11
11
|
{ name = "ARPA Hellenic Logical Systems", email = "skillware-os@arpacorp.net" },
|
|
12
12
|
]
|
|
13
|
-
urls = { "Homepage" = "https://arpacorp.net", "Repository" = "https://github.com/arpahls/skillware", "DOI" = "https://doi.org/10.5281/zenodo.21552745" }
|
|
14
13
|
license = { file = "LICENSE" }
|
|
15
14
|
classifiers = [
|
|
16
|
-
"
|
|
15
|
+
"Development Status :: 4 - Beta",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
17
|
"License :: OSI Approved :: MIT License",
|
|
18
18
|
"Operating System :: OS Independent",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
24
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
19
25
|
]
|
|
20
26
|
dependencies = [
|
|
21
27
|
"requests",
|
|
@@ -28,6 +34,16 @@ dependencies = [
|
|
|
28
34
|
]
|
|
29
35
|
requires-python = ">=3.10"
|
|
30
36
|
|
|
37
|
+
keywords = ["ai", "agents", "skills", "llm", "tools", "framework", "agent-tools", "registry"]
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Homepage = "https://skillware.site"
|
|
41
|
+
Repository = "https://github.com/ARPAHLS/skillware"
|
|
42
|
+
Documentation = "https://github.com/ARPAHLS/skillware/blob/main/docs/introduction.md"
|
|
43
|
+
Issues = "https://github.com/ARPAHLS/skillware/issues"
|
|
44
|
+
Changelog = "https://github.com/ARPAHLS/skillware/blob/main/CHANGELOG.md"
|
|
45
|
+
DOI = "https://doi.org/10.5281/zenodo.21552745"
|
|
46
|
+
|
|
31
47
|
[project.scripts]
|
|
32
48
|
skillware = "skillware.cli:main"
|
|
33
49
|
|
|
@@ -135,6 +151,8 @@ office_pdf_form_filler = [
|
|
|
135
151
|
|
|
136
152
|
optimization_prompt_rewriter = []
|
|
137
153
|
|
|
154
|
+
security_deceptive_ui_guard = []
|
|
155
|
+
|
|
138
156
|
security_prompt_injection_firewall = []
|
|
139
157
|
|
|
140
158
|
wellness_mental_coach = [
|
|
@@ -164,6 +182,7 @@ include = ["skillware*", "skills*"]
|
|
|
164
182
|
# Non-Python skill assets (yaml, md, json, data/) ship via MANIFEST.in (graft skills)
|
|
165
183
|
# and this wildcard. No per-skill entries needed when adding registry skills.
|
|
166
184
|
[tool.setuptools.package-data]
|
|
185
|
+
skillware = ["branding/*"]
|
|
167
186
|
skills = ["**/*"]
|
|
168
187
|
|
|
169
188
|
[tool.pytest.ini_options]
|
|
@@ -81,8 +81,12 @@ intent_to_action:
|
|
|
81
81
|
lookup: resolve_company
|
|
82
82
|
look_up: resolve_company
|
|
83
83
|
who_is: get_officers
|
|
84
|
+
director: get_officers
|
|
84
85
|
directors: get_officers
|
|
86
|
+
officer: get_officers
|
|
85
87
|
officers: get_officers
|
|
88
|
+
officer_name: get_officers
|
|
89
|
+
officer_names: get_officers
|
|
86
90
|
board: get_officers
|
|
87
91
|
management: get_officers
|
|
88
92
|
leadership: get_officers
|
|
@@ -98,6 +102,10 @@ intent_to_action:
|
|
|
98
102
|
filing: get_filing_history
|
|
99
103
|
accounts: get_filing_history
|
|
100
104
|
annual_return: get_filing_history
|
|
105
|
+
annual_report: get_filing_history
|
|
106
|
+
10k: get_filing_history
|
|
107
|
+
10_k: get_filing_history
|
|
108
|
+
financial_statements: get_filing_history
|
|
101
109
|
documents: get_filing_history
|
|
102
110
|
profile: get_company_profile
|
|
103
111
|
details: get_company_profile
|
|
@@ -105,3 +113,6 @@ intent_to_action:
|
|
|
105
113
|
information: get_company_profile
|
|
106
114
|
status: get_company_profile
|
|
107
115
|
registered: get_company_profile
|
|
116
|
+
secretary: get_officers
|
|
117
|
+
corporate_secretary: get_officers
|
|
118
|
+
beneficial_ownership: get_pscs
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# UK Companies House Handler
|
|
2
|
+
|
|
3
|
+
You are using the `finance/uk_companies_house_handler` skill.
|
|
4
|
+
|
|
5
|
+
This skill wraps the UK Companies House REST API (`api.company-information.service.gov.uk`) with deterministic actions. It returns structured JSON envelopes (`ready`, `partial`, `needs_input`, `error`) — it does not parse conversational user text. **You** infer intent, choose actions, pass clean parameters (`query`, `company_number`, `role_hint`, `category`), handle disambiguation with the user, and render record lists in your reply.
|
|
6
|
+
|
|
7
|
+
`data/terminology_map.yaml` is a **reference lexicon** for UK/US/finance term equivalents and keyword hints; it is not a substitute for your reasoning. Prefer explicit parameters over relying on keyword routing alone.
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Use this skill when the user:
|
|
12
|
+
|
|
13
|
+
- Asks about a UK company (England, Wales, Scotland, or Northern Ireland).
|
|
14
|
+
- Wants directors, officers, secretaries, PSCs, or filing history for a UK entity.
|
|
15
|
+
- Mentions Companies House or a UK company number (8 characters, e.g. `00445790`).
|
|
16
|
+
- Needs multi-step registry lookups that benefit from `run_pipeline` or composite actions.
|
|
17
|
+
|
|
18
|
+
## UK terminology (present only when the user used non-UK terms)
|
|
19
|
+
|
|
20
|
+
| User may say | UK registry term | Typical action |
|
|
21
|
+
| :--- | :--- | :--- |
|
|
22
|
+
| CEO, president, chairman | Director | `get_officers` + optional `role_hint: "ceo"` |
|
|
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` (+ optional `category`) |
|
|
26
|
+
| Company, corporation, LLC | Ltd, PLC, LLP | `resolve_company` |
|
|
27
|
+
|
|
28
|
+
Only explain terminology when the user used informal or US-centric wording. Do not add disclaimers during disambiguation prompts.
|
|
29
|
+
|
|
30
|
+
## Available actions
|
|
31
|
+
|
|
32
|
+
| Action | Purpose | Required params | Optional params |
|
|
33
|
+
| :--- | :--- | :--- | :--- |
|
|
34
|
+
| `resolve_company` | Search by name; ranked candidates | `query` (clean company name) | `limit` |
|
|
35
|
+
| `get_company_profile` | Full profile by number | `company_number` | |
|
|
36
|
+
| `get_officers` | Directors and secretaries | `company_number` | `active_only` (default **true**), `limit`, `role_hint`, `officer_filter` |
|
|
37
|
+
| `get_pscs` | Persons with significant control | `company_number` | `active_only` |
|
|
38
|
+
| `get_filing_history` | Filings (accounts, returns, etc.) | `company_number` | `category`, `limit` |
|
|
39
|
+
| `map_intent` | Suggest an action pipeline from keywords | `intent_keywords` and/or `entities` | `entities.company_query` when actions need a company |
|
|
40
|
+
| `run_pipeline` | Run ordered atomic steps; halt on `needs_input`/`error` | `steps` or resume via `context` | `company_number`, `pipeline`, `stop_on`, `context` |
|
|
41
|
+
| `resolve_and_get_officers` | Resolve + list officers in one call | `query` **or** `company_number` | `role_hint`, `active_only`, `limit`, `officer_filter` |
|
|
42
|
+
| `resolve_and_get_filings` | Resolve + list filings in one call | `query` **or** `company_number` | `category`, `limit` |
|
|
43
|
+
|
|
44
|
+
**Parameter hygiene:** Pass a **clean** company name in `query` / `entities.company_query` (e.g. `Barclays`, not `Who is the CEO of Barclays?`). Pass conversational role intent via `role_hint` (e.g. `"ceo"`, `"chairman"`). Strip trailing punctuation (`?`, `.`) yourself or rely on the skill's light normalization.
|
|
45
|
+
|
|
46
|
+
## Playbook — disambiguation and multi-step queries
|
|
47
|
+
|
|
48
|
+
### Example: "Who is the CEO of Barclays?"
|
|
49
|
+
|
|
50
|
+
1. **Do not** pass the full sentence as `query`. Call `resolve_and_get_officers` with `query: "Barclays"`, `role_hint: "ceo"` (or `run_pipeline` / `map_intent` + pipeline if you prefer).
|
|
51
|
+
2. If `status` is **`needs_input`**, present `candidates` (e.g. Barclays Bank PLC vs other Barclays entities) and ask the user to pick.
|
|
52
|
+
3. After confirmation, call `get_officers` with the chosen `company_number` (and `role_hint` if still relevant), or resume `run_pipeline` with `company_number` + remaining `steps` / `context`.
|
|
53
|
+
4. Answer the role question using UK director terminology when appropriate, then **render the full `officers[]` list** (name, role, appointed date).
|
|
54
|
+
|
|
55
|
+
### Multi-intent queries
|
|
56
|
+
|
|
57
|
+
For combined asks (e.g. *"officers and filings for BP"*):
|
|
58
|
+
|
|
59
|
+
1. Optionally call `map_intent` with `intent_keywords: "officers, filings"` and `entities: {"company_query": "BP"}` to obtain `suggested_pipeline`.
|
|
60
|
+
2. Execute via `run_pipeline` with atomic steps only (`resolve_company`, `get_officers`, `get_filing_history`, …). Never nest composites inside `run_pipeline`.
|
|
61
|
+
3. On `needs_input`, pause, disambiguate, then resume with `company_number` and updated `context` / `pipeline`.
|
|
62
|
+
|
|
63
|
+
### Single-intent shortcuts
|
|
64
|
+
|
|
65
|
+
- Officers only: `resolve_and_get_officers` with clean `query` + optional `role_hint`.
|
|
66
|
+
- Filings only: `resolve_and_get_filings` with clean `query` + optional `category`.
|
|
67
|
+
|
|
68
|
+
## Understanding responses
|
|
69
|
+
|
|
70
|
+
| Status | Meaning |
|
|
71
|
+
| :--- | :--- |
|
|
72
|
+
| `ready` | Complete result — present data clearly. |
|
|
73
|
+
| `partial` | Preview (default limit 10 officers or filings). **Always list returned records** and state total counts from the envelope / `agent_hint`. |
|
|
74
|
+
| `needs_input` | Ambiguous search or missing company name for pipeline — use `candidates` or `agent_hint`. |
|
|
75
|
+
| `error` | Check `error_code` and `message`. Use `agent_hint` for retry guidance (`rate_limited`, `timeout`, `connection_error`). |
|
|
76
|
+
|
|
77
|
+
Every response includes `fetched_at`, `source`, and usually `context`. Pipeline/composite responses may include `pipeline: {"completed_steps": N, "total_steps": M}`.
|
|
78
|
+
|
|
79
|
+
Common `error_code` values: `not_found`, `no_results`, `rate_limited`, `timeout`, `connection_error`, `missing_query`, `missing_company_number`.
|
|
80
|
+
|
|
81
|
+
## Limitations
|
|
82
|
+
|
|
83
|
+
- Read-only public registry data; no document downloads or filing submission (later v2 phases).
|
|
84
|
+
- Rate limit: 600 requests per 5 minutes per API key.
|
|
85
|
+
- Not legal or accounting advice — cite `company_number` and `fetched_at` when presenting data.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
name: finance/uk_companies_house_handler
|
|
2
|
+
version: 1.2.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, pipeline orchestration, and intent-to-operation mapping with UK corporate
|
|
7
|
+
terminology translation. Returns status-based responses (ready, partial,
|
|
8
|
+
needs_input, error) with disambiguation support. The agent owns natural-language
|
|
9
|
+
dialogue; the skill returns structured candidates and next actions.
|
|
10
|
+
short_description: "UK Companies House search, officers, PSC, filings, and pipeline orchestration 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, run_pipeline,
|
|
24
|
+
resolve_and_get_officers, resolve_and_get_filings.
|
|
25
|
+
enum:
|
|
26
|
+
- resolve_company
|
|
27
|
+
- get_company_profile
|
|
28
|
+
- get_officers
|
|
29
|
+
- get_pscs
|
|
30
|
+
- get_filing_history
|
|
31
|
+
- map_intent
|
|
32
|
+
- run_pipeline
|
|
33
|
+
- resolve_and_get_officers
|
|
34
|
+
- resolve_and_get_filings
|
|
35
|
+
query:
|
|
36
|
+
type: string
|
|
37
|
+
description: "Company name or partial name for search (resolve_company)."
|
|
38
|
+
company_query:
|
|
39
|
+
type: string
|
|
40
|
+
description: "Company name query for composite actions (resolve_and_get_officers, resolve_and_get_filings)."
|
|
41
|
+
company_number:
|
|
42
|
+
type: string
|
|
43
|
+
description: "8-character UK company number (required for profile/officers/pscs/filing)."
|
|
44
|
+
active_only:
|
|
45
|
+
type: boolean
|
|
46
|
+
description: "Filter to current/active records only. Default true for get_officers."
|
|
47
|
+
limit:
|
|
48
|
+
type: integer
|
|
49
|
+
description: "Max results to return (resolve_company). Default 5."
|
|
50
|
+
category:
|
|
51
|
+
type: string
|
|
52
|
+
description: "Filing category filter (get_filing_history, resolve_and_get_filings)."
|
|
53
|
+
officer_filter:
|
|
54
|
+
type: string
|
|
55
|
+
description: "Name or filter term for officers."
|
|
56
|
+
role_hint:
|
|
57
|
+
type: string
|
|
58
|
+
description: "Requested role or title hint (e.g. 'ceo', 'cfo', 'chairman') for officers lookup and UK terminology note."
|
|
59
|
+
intent_keywords:
|
|
60
|
+
type: string
|
|
61
|
+
description: "Comma-separated keywords from user intent for map_intent action."
|
|
62
|
+
entities:
|
|
63
|
+
type: object
|
|
64
|
+
description: "Extracted entities for map_intent (e.g. company_query, role)."
|
|
65
|
+
steps:
|
|
66
|
+
type: array
|
|
67
|
+
description: "Ordered list of step objects with action and params to execute sequentially (run_pipeline)."
|
|
68
|
+
items:
|
|
69
|
+
type: object
|
|
70
|
+
properties:
|
|
71
|
+
action:
|
|
72
|
+
type: string
|
|
73
|
+
params:
|
|
74
|
+
type: object
|
|
75
|
+
required:
|
|
76
|
+
- action
|
|
77
|
+
stop_on:
|
|
78
|
+
type: array
|
|
79
|
+
description: "List of status strings on which run_pipeline should pause/halt execution. Default: ['needs_input', 'error']."
|
|
80
|
+
items:
|
|
81
|
+
type: string
|
|
82
|
+
context:
|
|
83
|
+
type: object
|
|
84
|
+
description: "State carried over from prior skill turns (e.g. company_number, company_name)."
|
|
85
|
+
pipeline:
|
|
86
|
+
type: object
|
|
87
|
+
description: "State of an executing multi-step pipeline (e.g. completed_steps, total_steps) to carry forward."
|
|
88
|
+
required:
|
|
89
|
+
- action
|
|
90
|
+
outputs:
|
|
91
|
+
status:
|
|
92
|
+
type: string
|
|
93
|
+
description: "Envelope status: ready, partial, needs_input, or error."
|
|
94
|
+
source:
|
|
95
|
+
type: string
|
|
96
|
+
description: "Data provenance (typically companies_house_api)."
|
|
97
|
+
fetched_at:
|
|
98
|
+
type: string
|
|
99
|
+
description: "UTC ISO timestamp when the response was built."
|
|
100
|
+
context:
|
|
101
|
+
type: object
|
|
102
|
+
description: "Session state to pass on the next call (company_number, role_hint, next_actions, pipeline)."
|
|
103
|
+
pipeline:
|
|
104
|
+
type: object
|
|
105
|
+
description: "Multi-step progress when using run_pipeline or composite actions."
|
|
106
|
+
agent_hint:
|
|
107
|
+
type: string
|
|
108
|
+
description: "Optional guidance for the host agent (disambiguation, partial previews, retries)."
|
|
109
|
+
company_number:
|
|
110
|
+
type: string
|
|
111
|
+
description: "Resolved 8-character company number when applicable."
|
|
112
|
+
company_name:
|
|
113
|
+
type: string
|
|
114
|
+
description: "Registered company name when applicable."
|
|
115
|
+
officers:
|
|
116
|
+
type: array
|
|
117
|
+
description: "Officer records from get_officers or merged pipeline output."
|
|
118
|
+
filings:
|
|
119
|
+
type: array
|
|
120
|
+
description: "Filing records from get_filing_history or merged pipeline output."
|
|
121
|
+
suggested_pipeline:
|
|
122
|
+
type: array
|
|
123
|
+
description: "Ordered steps suggested by map_intent."
|
|
124
|
+
terminology_map:
|
|
125
|
+
type: object
|
|
126
|
+
description: "Keyword-to-UK-registry translations from map_intent."
|
|
127
|
+
constitution: |
|
|
128
|
+
1. Use only publicly available Companies House data.
|
|
129
|
+
2. Require COMPANIES_HOUSE_API_KEY via environment; never hardcode or log the key.
|
|
130
|
+
3. Do not cache personal data (officer names, addresses) beyond the current request.
|
|
131
|
+
4. Always cite company_number and data timestamp (fetched_at) in responses.
|
|
132
|
+
5. Never guess a company number; return ranked search hits when ambiguous.
|
|
133
|
+
6. This skill provides company information, not legal or accounting advice.
|
|
134
|
+
7. Do not submit filings or modify Companies House records.
|
|
135
|
+
env_vars:
|
|
136
|
+
COMPANIES_HOUSE_API_KEY:
|
|
137
|
+
description: "API key from the Companies House Developer Hub. Used as HTTP Basic username with empty password."
|
|
138
|
+
required: true
|
|
139
|
+
requirements:
|
|
140
|
+
- requests
|