skillware 0.4.2__tar.gz → 0.4.5__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.4.2/skillware.egg-info → skillware-0.4.5}/PKG-INFO +68 -20
- {skillware-0.4.2 → skillware-0.4.5}/README.md +14 -8
- {skillware-0.4.2 → skillware-0.4.5}/pyproject.toml +91 -10
- skillware-0.4.5/skills/creative/bg_remover/card.json +41 -0
- skillware-0.4.5/skills/creative/bg_remover/instructions.md +118 -0
- skillware-0.4.5/skills/creative/bg_remover/manifest.yaml +96 -0
- skillware-0.4.5/skills/creative/bg_remover/skill.py +96 -0
- skillware-0.4.5/skills/creative/bg_remover/test_skill.py +252 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/manifest.yaml +4 -3
- skillware-0.4.5/skillware/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware/cli.py +125 -26
- skillware-0.4.5/skillware/core/__init__.py +0 -0
- skillware-0.4.5/skillware/core/base_skill.py +62 -0
- skillware-0.4.5/skillware/core/discovery.py +249 -0
- skillware-0.4.5/skillware/core/extras.py +229 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware/core/loader.py +82 -97
- {skillware-0.4.2 → skillware-0.4.5/skillware.egg-info}/PKG-INFO +68 -20
- {skillware-0.4.2 → skillware-0.4.5}/skillware.egg-info/SOURCES.txt +13 -0
- skillware-0.4.5/skillware.egg-info/requires.txt +106 -0
- {skillware-0.4.2 → skillware-0.4.5}/tests/test_cli.py +84 -9
- skillware-0.4.5/tests/test_discovery.py +111 -0
- skillware-0.4.5/tests/test_extras_sync.py +95 -0
- skillware-0.4.5/tests/test_github_labels.py +64 -0
- {skillware-0.4.2 → skillware-0.4.5}/tests/test_loader.py +44 -4
- {skillware-0.4.2 → skillware-0.4.5}/tests/test_registry_docs.py +56 -0
- {skillware-0.4.2 → skillware-0.4.5}/tests/test_skill_issuer.py +11 -0
- skillware-0.4.5/tests/test_validate_params.py +79 -0
- {skillware-0.4.2 → skillware-0.4.5}/tests/test_version_policy.py +1 -1
- skillware-0.4.2/skillware/core/base_skill.py +0 -34
- skillware-0.4.2/skillware.egg-info/requires.txt +0 -43
- {skillware-0.4.2 → skillware-0.4.5}/LICENSE +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/MANIFEST.in +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/setup.cfg +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/mica_corpus.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/mica_module/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/pii_masker/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/pii_masker/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/pii_masker/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/pii_masker/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/pii_masker/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/pii_masker/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/tos_evaluator/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/tos_evaluator/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/tos_evaluator/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/tos_evaluator/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/tos_evaluator/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/compliance/tos_evaluator/test_skill.py +0 -0
- {skillware-0.4.2/skills/data_engineering → skillware-0.4.5/skills/creative}/__init__.py +0 -0
- {skillware-0.4.2/skills/defi → skillware-0.4.5/skills/creative/bg_remover}/__init__.py +0 -0
- {skillware-0.4.2/skills/defi/evm_tx_handler → skillware-0.4.5/skills/data_engineering}/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/novelty_extractor/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/novelty_extractor/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/novelty_extractor/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/novelty_extractor/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/novelty_extractor/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/novelty_extractor/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/synthetic_generator/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/synthetic_generator/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/synthetic_generator/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/synthetic_generator/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/synthetic_generator/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/data_engineering/synthetic_generator/test_skill.py +0 -0
- {skillware-0.4.2/skills/finance → skillware-0.4.5/skills/defi}/__init__.py +0 -0
- {skillware-0.4.2/skills/finance/uk_companies_house_handler → skillware-0.4.5/skills/defi/evm_tx_handler}/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/abis.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/config.yaml.example +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/data/addressbook.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/data/chains.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/data/tokens.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/defi/evm_tx_handler/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/dev_tools/issue_resolver/workflow.py +0 -0
- {skillware-0.4.2/skills/office → skillware-0.4.5/skills/finance}/__init__.py +0 -0
- {skillware-0.4.2/skills/office/pdf_form_filler → skillware-0.4.5/skills/finance/uk_companies_house_handler}/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/data/api_index.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/data/terminology_map.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/uk_companies_house_handler/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/data/entities.ftm.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/data/malicious_scs_2025.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/data/normalized_fbi_lazarus_20250722_180019.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/data/normalized_israel_nbctf_20250722_180019.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/data/normalized_uniswap_trm.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/maintenance/normalization_tool.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/maintenance/normalize_uniswap_trm.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/finance/wallet_screening/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/budget.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/data/model_pricing.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/monitoring/token_limiter/test_skill.py +0 -0
- {skillware-0.4.2/skills/optimization → skillware-0.4.5/skills/office}/__init__.py +0 -0
- {skillware-0.4.2/skills/wellness → skillware-0.4.5/skills/office/pdf_form_filler}/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/office/pdf_form_filler/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/office/pdf_form_filler/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/office/pdf_form_filler/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/office/pdf_form_filler/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/office/pdf_form_filler/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/office/pdf_form_filler/utils.py +0 -0
- {skillware-0.4.2/skillware → skillware-0.4.5/skills/optimization}/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/optimization/prompt_rewriter/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/optimization/prompt_rewriter/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/optimization/prompt_rewriter/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/optimization/prompt_rewriter/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/optimization/prompt_rewriter/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/optimization/prompt_rewriter/test_skill.py +0 -0
- {skillware-0.4.2/skillware/core → skillware-0.4.5/skills/wellness}/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/__init__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/card.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/constraints.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/crisis_gate.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/instructions.md +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/kb/corpus.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/kb/crisis_resources.json +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/kb/hard_constraints.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/kb_provider.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/manifest.yaml +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/resources.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skills/wellness/mental_coach/test_skill.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware/__main__.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware/core/env.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware/version_policy.py +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware.egg-info/dependency_links.txt +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware.egg-info/entry_points.txt +0 -0
- {skillware-0.4.2 → skillware-0.4.5}/skillware.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: skillware
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
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
|
|
@@ -38,35 +38,77 @@ Requires-Dist: pyyaml
|
|
|
38
38
|
Requires-Dist: python-dotenv
|
|
39
39
|
Requires-Dist: beautifulsoup4
|
|
40
40
|
Requires-Dist: packaging
|
|
41
|
+
Requires-Dist: jsonschema>=4.0
|
|
41
42
|
Requires-Dist: rich>=13.0
|
|
42
43
|
Provides-Extra: dev
|
|
43
44
|
Requires-Dist: pytest; extra == "dev"
|
|
44
45
|
Requires-Dist: pytest-mock; extra == "dev"
|
|
45
46
|
Requires-Dist: flake8; extra == "dev"
|
|
46
47
|
Requires-Dist: black; extra == "dev"
|
|
47
|
-
Provides-Extra: cli
|
|
48
48
|
Provides-Extra: gemini
|
|
49
49
|
Requires-Dist: google-genai; extra == "gemini"
|
|
50
50
|
Provides-Extra: claude
|
|
51
51
|
Requires-Dist: anthropic; extra == "claude"
|
|
52
52
|
Provides-Extra: openai
|
|
53
53
|
Requires-Dist: openai; extra == "openai"
|
|
54
|
-
Provides-Extra:
|
|
55
|
-
Requires-Dist:
|
|
54
|
+
Provides-Extra: agents
|
|
55
|
+
Requires-Dist: google-genai; extra == "agents"
|
|
56
|
+
Requires-Dist: anthropic; extra == "agents"
|
|
57
|
+
Requires-Dist: openai; extra == "agents"
|
|
58
|
+
Provides-Extra: compliance
|
|
59
|
+
Requires-Dist: google-genai; extra == "compliance"
|
|
60
|
+
Provides-Extra: creative
|
|
61
|
+
Requires-Dist: onnxruntime; extra == "creative"
|
|
62
|
+
Requires-Dist: pillow; extra == "creative"
|
|
63
|
+
Requires-Dist: rembg>=2.0.0; extra == "creative"
|
|
64
|
+
Provides-Extra: data-engineering
|
|
65
|
+
Requires-Dist: fastembed; extra == "data-engineering"
|
|
66
|
+
Requires-Dist: numpy; extra == "data-engineering"
|
|
56
67
|
Provides-Extra: defi
|
|
57
68
|
Requires-Dist: web3>=6.0.0; extra == "defi"
|
|
58
|
-
Provides-Extra:
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
Provides-Extra: dev-tools
|
|
70
|
+
Provides-Extra: finance
|
|
71
|
+
Provides-Extra: monitoring
|
|
72
|
+
Provides-Extra: office
|
|
73
|
+
Requires-Dist: anthropic; extra == "office"
|
|
74
|
+
Requires-Dist: pymupdf; extra == "office"
|
|
75
|
+
Provides-Extra: optimization
|
|
76
|
+
Provides-Extra: wellness
|
|
77
|
+
Requires-Dist: google-genai; extra == "wellness"
|
|
78
|
+
Provides-Extra: compliance-mica-module
|
|
79
|
+
Requires-Dist: google-genai; extra == "compliance-mica-module"
|
|
80
|
+
Provides-Extra: compliance-pii-masker
|
|
81
|
+
Provides-Extra: compliance-tos-evaluator
|
|
82
|
+
Provides-Extra: creative-bg-remover
|
|
83
|
+
Requires-Dist: rembg>=2.0.0; extra == "creative-bg-remover"
|
|
84
|
+
Requires-Dist: pillow; extra == "creative-bg-remover"
|
|
85
|
+
Requires-Dist: onnxruntime; extra == "creative-bg-remover"
|
|
86
|
+
Provides-Extra: data-engineering-novelty-extractor
|
|
87
|
+
Requires-Dist: fastembed; extra == "data-engineering-novelty-extractor"
|
|
88
|
+
Requires-Dist: numpy; extra == "data-engineering-novelty-extractor"
|
|
89
|
+
Provides-Extra: data-engineering-synthetic-generator
|
|
90
|
+
Provides-Extra: defi-evm-tx-handler
|
|
91
|
+
Requires-Dist: web3>=6.0.0; extra == "defi-evm-tx-handler"
|
|
92
|
+
Provides-Extra: dev-tools-issue-resolver
|
|
93
|
+
Provides-Extra: finance-uk-companies-house-handler
|
|
94
|
+
Provides-Extra: finance-wallet-screening
|
|
95
|
+
Provides-Extra: monitoring-token-limiter
|
|
96
|
+
Provides-Extra: office-pdf-form-filler
|
|
97
|
+
Requires-Dist: pymupdf; extra == "office-pdf-form-filler"
|
|
98
|
+
Requires-Dist: anthropic; extra == "office-pdf-form-filler"
|
|
99
|
+
Provides-Extra: optimization-prompt-rewriter
|
|
100
|
+
Provides-Extra: wellness-mental-coach
|
|
101
|
+
Requires-Dist: google-genai; extra == "wellness-mental-coach"
|
|
61
102
|
Provides-Extra: all
|
|
62
|
-
Requires-Dist: rich>=13.0; extra == "all"
|
|
63
|
-
Requires-Dist: google-genai; extra == "all"
|
|
64
103
|
Requires-Dist: anthropic; extra == "all"
|
|
65
|
-
Requires-Dist: openai; extra == "all"
|
|
66
|
-
Requires-Dist: pymupdf; extra == "all"
|
|
67
|
-
Requires-Dist: web3>=6.0.0; extra == "all"
|
|
68
104
|
Requires-Dist: fastembed; extra == "all"
|
|
105
|
+
Requires-Dist: google-genai; extra == "all"
|
|
69
106
|
Requires-Dist: numpy; extra == "all"
|
|
107
|
+
Requires-Dist: onnxruntime; extra == "all"
|
|
108
|
+
Requires-Dist: pillow; extra == "all"
|
|
109
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
110
|
+
Requires-Dist: rembg>=2.0.0; extra == "all"
|
|
111
|
+
Requires-Dist: web3>=6.0.0; extra == "all"
|
|
70
112
|
Dynamic: license-file
|
|
71
113
|
|
|
72
114
|
<div align="center">
|
|
@@ -183,21 +225,24 @@ cd skillware
|
|
|
183
225
|
pip install -e ".[dev,all]"
|
|
184
226
|
```
|
|
185
227
|
|
|
186
|
-
For documentation-only work, `pip install -e ".[dev]"` is enough. Skill and framework contributors should use `[dev,all]` to match CI (see [TESTING.md](docs/TESTING.md)).
|
|
228
|
+
For documentation-only work, `pip install -e ".[dev]"` is enough. Skill and framework contributors should use `[dev,all]` to match CI (see [TESTING.md](docs/TESTING.md) and [Install extras](docs/usage/install_extras.md)).
|
|
187
229
|
|
|
188
|
-
> **Note**:
|
|
230
|
+
> **Note**: Every skill has a dedicated pip extra (`pip install "skillware[category_skill]"`). The `SkillLoader` validates `manifest.yaml` on load and suggests the matching extra when packages are missing. See [Install extras](docs/usage/install_extras.md).
|
|
189
231
|
|
|
190
232
|
### 2. Verify your installation
|
|
191
233
|
|
|
192
234
|
```bash
|
|
193
235
|
skillware list
|
|
236
|
+
skillware paths
|
|
194
237
|
```
|
|
195
238
|
|
|
196
239
|
This prints a table of all locally available skills and confirms the install
|
|
197
|
-
and path resolution are working.
|
|
198
|
-
the
|
|
199
|
-
|
|
200
|
-
|
|
240
|
+
and path resolution are working. `skillware paths` shows the same root order
|
|
241
|
+
the loader uses (external → project → bundled), tier labels, and shadowing.
|
|
242
|
+
Running `skillware` with no arguments opens the interactive menu. As optional
|
|
243
|
+
checks you can also run `skillware test` to execute bundle tests, and
|
|
244
|
+
`skillware examples` to browse the runnable example index (fetched from GitHub
|
|
245
|
+
when no local `examples/README.md` is present).
|
|
201
246
|
|
|
202
247
|
If `skillware` is not recognized, Python's `Scripts` directory may not be on
|
|
203
248
|
your PATH — use `python -m skillware list` as a fallback. See
|
|
@@ -221,6 +266,8 @@ Copy-Item .env.example .env
|
|
|
221
266
|
|
|
222
267
|
Edit `.env` with agent keys (for example Gemini) and any keys your skills need. Agent keys power your LLM client; skill keys are declared per skill in the [Skill library](docs/skills/README.md). See [API keys for skills](docs/usage/api_keys.md) for setup, security, and framework variables.
|
|
223
268
|
|
|
269
|
+
> Note: any loaded skill runs in your process and can read every variable in `os.environ`. Before wiring in real keys — especially with skills you did not write — see the [skill trust model](docs/security/skill-trust-model.md).
|
|
270
|
+
|
|
224
271
|
### 4. Usage Example (Gemini)
|
|
225
272
|
|
|
226
273
|
This example requires the Google SDK optional extra: `pip install "skillware[gemini]"` (local dev: `pip install -e ".[gemini]"`). See the [Gemini usage guide](docs/usage/gemini.md) for setup details.
|
|
@@ -289,14 +336,15 @@ For other providers and shared integration patterns, see the [usage guides index
|
|
|
289
336
|
| Topic | Links |
|
|
290
337
|
| :--- | :--- |
|
|
291
338
|
| **Introduction** | [Introduction](docs/introduction.md) · [Vision](docs/vision.md) · [Comparison](COMPARISON.md) |
|
|
292
|
-
| **Usage guides** | [Skill Library](docs/skills/README.md) · [Usage Guide](docs/usage/README.md) · [Examples](examples/README.md) · [Agent Loops](docs/usage/agent_loops.md) · [API Keys](docs/usage/api_keys.md) · [CLI](docs/usage/cli.md) |
|
|
339
|
+
| **Usage guides** | [Skill Library](docs/skills/README.md) · [Usage Guide](docs/usage/README.md) · [Install extras](docs/usage/install_extras.md) · [Examples](examples/README.md) · [Agent Loops](docs/usage/agent_loops.md) · [API Keys](docs/usage/api_keys.md) · [CLI](docs/usage/cli.md) |
|
|
340
|
+
| **Security** | [Skill trust model](docs/security/skill-trust-model.md) · [SECURITY.md](SECURITY.md) |
|
|
293
341
|
| **Contributing** | [Contributing](CONTRIBUTING.md) · [Agent Native Workflow](docs/contributing/ai_native_workflow.md) · [Testing](docs/TESTING.md) · [Changelog](CHANGELOG.md) |
|
|
294
342
|
|
|
295
343
|
## Contributing
|
|
296
344
|
|
|
297
345
|
We are building the "App Store" for Agents. Skills are the main contribution, but documentation, tests, and framework fixes are welcome too. Human operators and supervised agents follow the same standards: scoped PRs, deterministic behavior, and verified tests.
|
|
298
346
|
|
|
299
|
-
|
|
347
|
+
Start with [Contributing](CONTRIBUTING.md) (types, skill standard, PR process), [Agent Native Workflow](docs/contributing/ai_native_workflow.md) (for autonomous and semi-autonomous agents), [Testing](docs/TESTING.md) (Black, Flake8, framework and skill pytest, pre-PR checklist), and [Changelog](CHANGELOG.md) (user-facing entries under `[Unreleased]`).
|
|
300
348
|
|
|
301
349
|
Also read the [Agent Code of Conduct](CODE_OF_CONDUCT.md). Open PRs with the [pull request template](.github/PULL_REQUEST_TEMPLATE.md) and complete only the sections that apply.
|
|
302
350
|
|
|
@@ -112,21 +112,24 @@ cd skillware
|
|
|
112
112
|
pip install -e ".[dev,all]"
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
For documentation-only work, `pip install -e ".[dev]"` is enough. Skill and framework contributors should use `[dev,all]` to match CI (see [TESTING.md](docs/TESTING.md)).
|
|
115
|
+
For documentation-only work, `pip install -e ".[dev]"` is enough. Skill and framework contributors should use `[dev,all]` to match CI (see [TESTING.md](docs/TESTING.md) and [Install extras](docs/usage/install_extras.md)).
|
|
116
116
|
|
|
117
|
-
> **Note**:
|
|
117
|
+
> **Note**: Every skill has a dedicated pip extra (`pip install "skillware[category_skill]"`). The `SkillLoader` validates `manifest.yaml` on load and suggests the matching extra when packages are missing. See [Install extras](docs/usage/install_extras.md).
|
|
118
118
|
|
|
119
119
|
### 2. Verify your installation
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
122
|
skillware list
|
|
123
|
+
skillware paths
|
|
123
124
|
```
|
|
124
125
|
|
|
125
126
|
This prints a table of all locally available skills and confirms the install
|
|
126
|
-
and path resolution are working.
|
|
127
|
-
the
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
and path resolution are working. `skillware paths` shows the same root order
|
|
128
|
+
the loader uses (external → project → bundled), tier labels, and shadowing.
|
|
129
|
+
Running `skillware` with no arguments opens the interactive menu. As optional
|
|
130
|
+
checks you can also run `skillware test` to execute bundle tests, and
|
|
131
|
+
`skillware examples` to browse the runnable example index (fetched from GitHub
|
|
132
|
+
when no local `examples/README.md` is present).
|
|
130
133
|
|
|
131
134
|
If `skillware` is not recognized, Python's `Scripts` directory may not be on
|
|
132
135
|
your PATH — use `python -m skillware list` as a fallback. See
|
|
@@ -150,6 +153,8 @@ Copy-Item .env.example .env
|
|
|
150
153
|
|
|
151
154
|
Edit `.env` with agent keys (for example Gemini) and any keys your skills need. Agent keys power your LLM client; skill keys are declared per skill in the [Skill library](docs/skills/README.md). See [API keys for skills](docs/usage/api_keys.md) for setup, security, and framework variables.
|
|
152
155
|
|
|
156
|
+
> Note: any loaded skill runs in your process and can read every variable in `os.environ`. Before wiring in real keys — especially with skills you did not write — see the [skill trust model](docs/security/skill-trust-model.md).
|
|
157
|
+
|
|
153
158
|
### 4. Usage Example (Gemini)
|
|
154
159
|
|
|
155
160
|
This example requires the Google SDK optional extra: `pip install "skillware[gemini]"` (local dev: `pip install -e ".[gemini]"`). See the [Gemini usage guide](docs/usage/gemini.md) for setup details.
|
|
@@ -218,14 +223,15 @@ For other providers and shared integration patterns, see the [usage guides index
|
|
|
218
223
|
| Topic | Links |
|
|
219
224
|
| :--- | :--- |
|
|
220
225
|
| **Introduction** | [Introduction](docs/introduction.md) · [Vision](docs/vision.md) · [Comparison](COMPARISON.md) |
|
|
221
|
-
| **Usage guides** | [Skill Library](docs/skills/README.md) · [Usage Guide](docs/usage/README.md) · [Examples](examples/README.md) · [Agent Loops](docs/usage/agent_loops.md) · [API Keys](docs/usage/api_keys.md) · [CLI](docs/usage/cli.md) |
|
|
226
|
+
| **Usage guides** | [Skill Library](docs/skills/README.md) · [Usage Guide](docs/usage/README.md) · [Install extras](docs/usage/install_extras.md) · [Examples](examples/README.md) · [Agent Loops](docs/usage/agent_loops.md) · [API Keys](docs/usage/api_keys.md) · [CLI](docs/usage/cli.md) |
|
|
227
|
+
| **Security** | [Skill trust model](docs/security/skill-trust-model.md) · [SECURITY.md](SECURITY.md) |
|
|
222
228
|
| **Contributing** | [Contributing](CONTRIBUTING.md) · [Agent Native Workflow](docs/contributing/ai_native_workflow.md) · [Testing](docs/TESTING.md) · [Changelog](CHANGELOG.md) |
|
|
223
229
|
|
|
224
230
|
## Contributing
|
|
225
231
|
|
|
226
232
|
We are building the "App Store" for Agents. Skills are the main contribution, but documentation, tests, and framework fixes are welcome too. Human operators and supervised agents follow the same standards: scoped PRs, deterministic behavior, and verified tests.
|
|
227
233
|
|
|
228
|
-
|
|
234
|
+
Start with [Contributing](CONTRIBUTING.md) (types, skill standard, PR process), [Agent Native Workflow](docs/contributing/ai_native_workflow.md) (for autonomous and semi-autonomous agents), [Testing](docs/TESTING.md) (Black, Flake8, framework and skill pytest, pre-PR checklist), and [Changelog](CHANGELOG.md) (user-facing entries under `[Unreleased]`).
|
|
229
235
|
|
|
230
236
|
Also read the [Agent Code of Conduct](CODE_OF_CONDUCT.md). Open PRs with the [pull request template](.github/PULL_REQUEST_TEMPLATE.md) and complete only the sections that apply.
|
|
231
237
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "skillware"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.5"
|
|
8
8
|
description = "A framework for modular, self-contained AI skills."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -23,6 +23,7 @@ dependencies = [
|
|
|
23
23
|
"python-dotenv",
|
|
24
24
|
"beautifulsoup4",
|
|
25
25
|
"packaging",
|
|
26
|
+
"jsonschema>=4.0",
|
|
26
27
|
"rich>=13.0",
|
|
27
28
|
]
|
|
28
29
|
requires-python = ">=3.10"
|
|
@@ -37,7 +38,6 @@ dev = [
|
|
|
37
38
|
"flake8",
|
|
38
39
|
"black",
|
|
39
40
|
]
|
|
40
|
-
cli = []
|
|
41
41
|
gemini = [
|
|
42
42
|
"google-genai",
|
|
43
43
|
]
|
|
@@ -47,27 +47,108 @@ claude = [
|
|
|
47
47
|
openai = [
|
|
48
48
|
"openai",
|
|
49
49
|
]
|
|
50
|
-
|
|
51
|
-
"
|
|
50
|
+
agents = [
|
|
51
|
+
"google-genai",
|
|
52
|
+
"anthropic",
|
|
53
|
+
"openai",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
# --- extras: begin generated by scripts/sync_extras.py ---
|
|
57
|
+
|
|
58
|
+
compliance = [
|
|
59
|
+
"google-genai",
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
creative = [
|
|
63
|
+
"onnxruntime",
|
|
64
|
+
"pillow",
|
|
65
|
+
"rembg>=2.0.0",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
data_engineering = [
|
|
69
|
+
"fastembed",
|
|
70
|
+
"numpy",
|
|
52
71
|
]
|
|
72
|
+
|
|
53
73
|
defi = [
|
|
54
74
|
"web3>=6.0.0",
|
|
55
75
|
]
|
|
56
|
-
|
|
76
|
+
|
|
77
|
+
dev_tools = []
|
|
78
|
+
|
|
79
|
+
finance = []
|
|
80
|
+
|
|
81
|
+
monitoring = []
|
|
82
|
+
|
|
83
|
+
office = [
|
|
84
|
+
"anthropic",
|
|
85
|
+
"pymupdf",
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
optimization = []
|
|
89
|
+
|
|
90
|
+
wellness = [
|
|
91
|
+
"google-genai",
|
|
92
|
+
]
|
|
93
|
+
|
|
94
|
+
compliance_mica_module = [
|
|
95
|
+
"google-genai",
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
compliance_pii_masker = []
|
|
99
|
+
|
|
100
|
+
compliance_tos_evaluator = []
|
|
101
|
+
|
|
102
|
+
creative_bg_remover = [
|
|
103
|
+
"rembg>=2.0.0",
|
|
104
|
+
"pillow",
|
|
105
|
+
"onnxruntime",
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
data_engineering_novelty_extractor = [
|
|
57
109
|
"fastembed",
|
|
58
110
|
"numpy",
|
|
59
111
|
]
|
|
60
|
-
|
|
61
|
-
|
|
112
|
+
|
|
113
|
+
data_engineering_synthetic_generator = []
|
|
114
|
+
|
|
115
|
+
defi_evm_tx_handler = [
|
|
116
|
+
"web3>=6.0.0",
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
dev_tools_issue_resolver = []
|
|
120
|
+
|
|
121
|
+
finance_uk_companies_house_handler = []
|
|
122
|
+
|
|
123
|
+
finance_wallet_screening = []
|
|
124
|
+
|
|
125
|
+
monitoring_token_limiter = []
|
|
126
|
+
|
|
127
|
+
office_pdf_form_filler = [
|
|
128
|
+
"pymupdf",
|
|
129
|
+
"anthropic",
|
|
130
|
+
]
|
|
131
|
+
|
|
132
|
+
optimization_prompt_rewriter = []
|
|
133
|
+
|
|
134
|
+
wellness_mental_coach = [
|
|
62
135
|
"google-genai",
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
all = [
|
|
63
139
|
"anthropic",
|
|
64
|
-
"openai",
|
|
65
|
-
"pymupdf",
|
|
66
|
-
"web3>=6.0.0",
|
|
67
140
|
"fastembed",
|
|
141
|
+
"google-genai",
|
|
68
142
|
"numpy",
|
|
143
|
+
"onnxruntime",
|
|
144
|
+
"pillow",
|
|
145
|
+
"pymupdf",
|
|
146
|
+
"rembg>=2.0.0",
|
|
147
|
+
"web3>=6.0.0",
|
|
69
148
|
]
|
|
70
149
|
|
|
150
|
+
# --- extras: end generated by scripts/sync_extras.py ---
|
|
151
|
+
|
|
71
152
|
[tool.setuptools]
|
|
72
153
|
include-package-data = true
|
|
73
154
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Background Remover",
|
|
3
|
+
"description": "Remove image backgrounds locally using rembg and return transparent PNGs.",
|
|
4
|
+
"issuer": {
|
|
5
|
+
"name": "Ayush Srivastava",
|
|
6
|
+
"email": "ayush.sri0705@gmail.com",
|
|
7
|
+
"github": "AyushSrivastava1818",
|
|
8
|
+
"org": ""
|
|
9
|
+
},
|
|
10
|
+
"icon": "photo",
|
|
11
|
+
"color": "violet",
|
|
12
|
+
"ui_schema": {
|
|
13
|
+
"type": "card",
|
|
14
|
+
"fields": [
|
|
15
|
+
{
|
|
16
|
+
"key": "success",
|
|
17
|
+
"label": "Status",
|
|
18
|
+
"type": "status_badge"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"key": "width",
|
|
22
|
+
"label": "Width",
|
|
23
|
+
"type": "count"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"key": "height",
|
|
27
|
+
"label": "Height",
|
|
28
|
+
"type": "count"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"key": "model_used",
|
|
32
|
+
"label": "Model"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"key": "output_path",
|
|
36
|
+
"label": "Output",
|
|
37
|
+
"type": "file_path"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Background Remover (`creative/bg_remover`)
|
|
2
|
+
|
|
3
|
+
Removes backgrounds from **still images** locally using rembg. Accepts base64 or a local file path; returns a transparent PNG in `image_base64` and optionally writes to `output_path`. Does not fetch URLs or call cloud APIs.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
Invoke when the user asks to:
|
|
8
|
+
|
|
9
|
+
- remove the background from an image
|
|
10
|
+
- create a transparent PNG or PNG with alpha
|
|
11
|
+
- cut out, isolate, or extract a product, person, logo, or subject
|
|
12
|
+
- prepare an image for design, e-commerce, or compositing workflows
|
|
13
|
+
|
|
14
|
+
Trigger phrases include: "remove background", "transparent background", "cut out", "isolate product/person", "PNG with alpha", "no background".
|
|
15
|
+
|
|
16
|
+
## When not to use
|
|
17
|
+
|
|
18
|
+
Do **not** invoke for:
|
|
19
|
+
|
|
20
|
+
- videos or animated media
|
|
21
|
+
- batch folders or bulk directory processing
|
|
22
|
+
- requests to edit only in Photoshop, Canva, or other cloud editors when no local image bytes are available to pass in
|
|
23
|
+
- workflows where neither `image` nor `input_path` can be supplied
|
|
24
|
+
|
|
25
|
+
## Before calling
|
|
26
|
+
|
|
27
|
+
If the user wants background removal but has **not** provided an image, file path, or chat attachment, **ask** for one first. Do not call until input exists.
|
|
28
|
+
|
|
29
|
+
This skill does **not** fetch URLs. When the user provides an `https://…` link, download to a temp file first, then pass `input_path`.
|
|
30
|
+
|
|
31
|
+
For S3, GCS, Azure Blob, or Cloudflare R2: download the object to a temp file → `input_path` → after success upload from `output_path`. Auth and SDK calls stay in the host; this skill is local-only.
|
|
32
|
+
|
|
33
|
+
On the **first run** in a fresh environment, processing may take a few minutes while rembg downloads the ONNX model (~176 MB for `isnet-general-use`). Later runs reuse the cache and are much faster.
|
|
34
|
+
|
|
35
|
+
## Input (one required: `image` OR `input_path`)
|
|
36
|
+
|
|
37
|
+
| Scenario | Parameter |
|
|
38
|
+
| :--- | :--- |
|
|
39
|
+
| Uploaded, pasted, or **attached** image in chat | `image` (base64 from host encoding) |
|
|
40
|
+
| Local path (e.g. `D:\photos\cat.png`) | `input_path` (absolute path preferred on Windows) |
|
|
41
|
+
| URL | Download to temp file, then `input_path` |
|
|
42
|
+
| Cloud object storage | Download object → temp file → `input_path` |
|
|
43
|
+
|
|
44
|
+
If **both** `image` and `input_path` are sent, **`image` wins** (do not double-submit).
|
|
45
|
+
|
|
46
|
+
### Example payloads
|
|
47
|
+
|
|
48
|
+
Chat / attachment:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{"image": "<base64>"}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Local file with output beside source:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"input_path": "D:\\photos\\1223.png",
|
|
59
|
+
"output_path": "D:\\photos\\1223_no_bg.png"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
URL (host downloads first; URL is not a skill parameter):
|
|
64
|
+
|
|
65
|
+
1. Download `https://example.com/product.jpg` → `/tmp/product.jpg`
|
|
66
|
+
2. Execute:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"input_path": "/tmp/product.jpg",
|
|
71
|
+
"output_path": "/tmp/product_no_bg.png"
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Model and quality options
|
|
76
|
+
|
|
77
|
+
| User intent | Suggested args |
|
|
78
|
+
| :--- | :--- |
|
|
79
|
+
| General product, logo, or scene (default) | `model`: `isnet-general-use` |
|
|
80
|
+
| Person, portrait, or human subject | `model`: `u2net_human_seg` |
|
|
81
|
+
| Legacy / simple scenes | `model`: `u2net` or `silueta` |
|
|
82
|
+
| Hair, fur, glass, or fine edges need cleaner alpha | `alpha_matting`: `true` (slower) |
|
|
83
|
+
|
|
84
|
+
Omit `model` for default `isnet-general-use`. Set `alpha_matting` only when edge quality matters or the user mentions hair, fur, or wispy details.
|
|
85
|
+
|
|
86
|
+
## Output
|
|
87
|
+
|
|
88
|
+
| Scenario | Parameters / handling |
|
|
89
|
+
| :--- | :--- |
|
|
90
|
+
| File on disk | Set `output_path`. Prefer `{same_dir}/{stem}_no_bg.png`. Do **not** overwrite the source unless asked. |
|
|
91
|
+
| Chat or API only | Omit `output_path`; use `image_base64` from the result (always present on success). |
|
|
92
|
+
| Save next to original | Same directory, new name (e.g. `1223_no_bg.png`). |
|
|
93
|
+
|
|
94
|
+
## Interpreting a successful result
|
|
95
|
+
|
|
96
|
+
When `success` is `true`:
|
|
97
|
+
|
|
98
|
+
- `image_base64` — transparent PNG bytes (always set); decode or attach for the user when no file path was requested
|
|
99
|
+
- `mime_type` — always `image/png`
|
|
100
|
+
- `width`, `height` — output dimensions; mention when useful
|
|
101
|
+
- `model_used` — rembg model that ran
|
|
102
|
+
- `output_path` — echo of the path written when provided; confirm the file exists on disk
|
|
103
|
+
|
|
104
|
+
Do not call again for the same request unless the user asks for another image or different settings.
|
|
105
|
+
|
|
106
|
+
## Dependencies
|
|
107
|
+
|
|
108
|
+
Runtime: `rembg`, `pillow`, `onnxruntime`. Install: `pip install "skillware[creative_bg_remover]"` or `pip install "skillware[creative]"`.
|
|
109
|
+
|
|
110
|
+
First `execute()` downloads the ONNX model to the rembg cache (`~/.u2net/` on Linux/macOS, `%USERPROFILE%\.u2net\` on Windows).
|
|
111
|
+
|
|
112
|
+
## Errors
|
|
113
|
+
|
|
114
|
+
| `error_code` | Response |
|
|
115
|
+
| :--- | :--- |
|
|
116
|
+
| `INVALID_INPUT` | Ask for an upload, attachment, base64 payload, or local `input_path`. |
|
|
117
|
+
| `MISSING_DEPENDENCY` | Ask the user to run `pip install "skillware[creative_bg_remover]"` (or `pip install rembg pillow onnxruntime`), then retry. |
|
|
118
|
+
| `PROCESSING_FAILED` | Surface the `error` string; input may be missing, corrupt, or unsupported. |
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
name: "creative/bg_remover"
|
|
2
|
+
version: "0.1.0"
|
|
3
|
+
description: "Remove image backgrounds locally using rembg."
|
|
4
|
+
short_description: "Offline background removal using rembg with transparent PNG output."
|
|
5
|
+
|
|
6
|
+
issuer:
|
|
7
|
+
name: Ayush Srivastava
|
|
8
|
+
email: "ayush.sri0705@gmail.com"
|
|
9
|
+
github: AyushSrivastava1818
|
|
10
|
+
org: ""
|
|
11
|
+
|
|
12
|
+
category: "creative"
|
|
13
|
+
|
|
14
|
+
parameters:
|
|
15
|
+
type: object
|
|
16
|
+
properties:
|
|
17
|
+
image:
|
|
18
|
+
type: string
|
|
19
|
+
description: "Base64-encoded still image (preferred for chat/upload handoff)."
|
|
20
|
+
|
|
21
|
+
input_path:
|
|
22
|
+
type: string
|
|
23
|
+
description: "Absolute or relative path to a local still image file."
|
|
24
|
+
|
|
25
|
+
output_path:
|
|
26
|
+
type: string
|
|
27
|
+
description: "Optional path to write PNG; if omitted, result is base64-only in image_base64."
|
|
28
|
+
|
|
29
|
+
model:
|
|
30
|
+
type: string
|
|
31
|
+
description: "rembg model; default isnet-general-use. Use u2net_human_seg for people."
|
|
32
|
+
enum:
|
|
33
|
+
- isnet-general-use
|
|
34
|
+
- u2net
|
|
35
|
+
- u2net_human_seg
|
|
36
|
+
- silueta
|
|
37
|
+
default: isnet-general-use
|
|
38
|
+
|
|
39
|
+
alpha_matting:
|
|
40
|
+
type: boolean
|
|
41
|
+
description: "Enable alpha matting for finer edges (hair, fur); slower when true."
|
|
42
|
+
default: false
|
|
43
|
+
required: []
|
|
44
|
+
|
|
45
|
+
outputs:
|
|
46
|
+
success:
|
|
47
|
+
type: boolean
|
|
48
|
+
description: "True when background removal completed successfully."
|
|
49
|
+
|
|
50
|
+
image_base64:
|
|
51
|
+
type: string
|
|
52
|
+
description: "Base64-encoded transparent PNG (always set on success)."
|
|
53
|
+
|
|
54
|
+
mime_type:
|
|
55
|
+
type: string
|
|
56
|
+
description: "Output MIME type (image/png on success)."
|
|
57
|
+
|
|
58
|
+
output_path:
|
|
59
|
+
type: string
|
|
60
|
+
description: "Echo of the requested output path when provided."
|
|
61
|
+
|
|
62
|
+
width:
|
|
63
|
+
type: integer
|
|
64
|
+
description: "Output image width in pixels."
|
|
65
|
+
|
|
66
|
+
height:
|
|
67
|
+
type: integer
|
|
68
|
+
description: "Output image height in pixels."
|
|
69
|
+
|
|
70
|
+
model_used:
|
|
71
|
+
type: string
|
|
72
|
+
description: "rembg model used for processing."
|
|
73
|
+
|
|
74
|
+
error:
|
|
75
|
+
type: string
|
|
76
|
+
description: "Human-readable error message when success is false."
|
|
77
|
+
|
|
78
|
+
error_code:
|
|
79
|
+
type: string
|
|
80
|
+
description: "INVALID_INPUT, MISSING_DEPENDENCY, or PROCESSING_FAILED."
|
|
81
|
+
|
|
82
|
+
requirements:
|
|
83
|
+
- rembg>=2.0.0
|
|
84
|
+
- pillow
|
|
85
|
+
- onnxruntime
|
|
86
|
+
|
|
87
|
+
constitution: |
|
|
88
|
+
1. IMAGE_ONLY: Process still images only.
|
|
89
|
+
2. LOCAL_FIRST: Never use cloud APIs.
|
|
90
|
+
3. PRIVACY: Never store image bytes.
|
|
91
|
+
4. DETERMINISTIC: Same input produces same output.
|
|
92
|
+
5. FAIL_CLOSED: Return structured errors on invalid input.
|
|
93
|
+
|
|
94
|
+
presentation:
|
|
95
|
+
icon: "photo"
|
|
96
|
+
color: "#8b5cf6"
|