brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
custom-skillsGuides PandasAI custom function skills, @pai.skill decorators, SkillType validation, global registry management, and skill-related troubleshooting.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this sub-skill when a user wants PandasAI to make custom Python functions
available to generated analysis code through @pai.skill() or the
pandasai.ee.skills registry.
PandasAI custom skills are runtime functions for PandasAI-generated code. They
are not DisCo Agent Skills and are not SKILL.md directories.
@pai.skill() or @pai.skill("custom_name").SkillsManager between tests to avoid
duplicate-name leakage.../conversational-analysis/SKILL.md
after registration is correct.import pandasai as pai
@pai.skill()
def format_currency(amount: float) -> str:
"""Format a numeric amount as US dollars."""
return f"${amount:,.2f}"
references/api-reference.md for SkillType,
decorator forms, and SkillsManager methods.references/workflows.md for defining, naming,
testing, and clearing custom skills.references/troubleshooting.md for missing
docstrings, duplicate registry names, lambda functions, and terminology
confusion.scripts/skill_registry_smoke.py for a
no-LLM registry behavior smoke.../conversational-analysis/SKILL.md.../sandbox-and-security/SKILL.md.@pai.skill; these are unrelated skill systems.PandasAI documentation marks custom skills as an Enterprise feature for production use. For local experimentation and tests, the decorator and registry exist in the package. For production deployments, warn the user to confirm their PandasAI license/plan.
python sub-skills/custom-skills/scripts/skill_registry_smoke.py
The helper registers a small skill, verifies duplicate-name protection, verifies no-docstring failure behavior, and prints JSON. It does not need a real LLM or provider key.
SkillType(..., description=...) is
used directly.ValueError.SkillType objects, but remain callable.