npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@credal/actions

v0.2.189

Published

AI Actions by Credal AI

Readme

Credal Logo

Credal.ai's Open Source Actions Framework

Easily add custom actions for your Credal Copilots. Read more about Credal's Agent platform here.

Adding or updating actions

We strongly encourage you to develop actions that rely on oauth based credentials. This is to ensure we respect the permissions of the underlying systems the actions library interacts with. In some situations, oauth is not a valid option and so API keys are a good fallback.

  1. Add or update the action in src/actions/schema.yaml
  2. Run npm run generate:types to generate the new types
  3. Run npm run prettier-format to format the new files
  4. Create a new provider function in src/actions/providers/<provider>/<action>.ts (eg. src/actions/providers/math/add.ts) which exports a function using the generated types
  5. If adding a new action or provider, update src/actions/actionMapper.ts.
  6. In package.json and package-lock.json (which must be updated in two places), bump the version number.
  7. Run npm publish --access public to publish the new version to npm. (Need to be logged in via npm login)

Writing good action parameter descriptions

When adding new actions to the SDK, follow these guidelines to ensure agents can use them effectively:

1. Write Parameter Descriptions from the Agent's Perspective

Parameter descriptions should be specific and unambiguous for an LLM agent that will be reading them to understand how to call the action.

  • Avoid pronouns like "it" — explicitly name the entity (e.g., "the ticket", "the project", "the message")
  • Be specific about ownership/relationships — say "the owner's username" instead of just "owner"
  • Include context about what the action does — e.g., clarify that sendDmFromBot sends a message on behalf of the Credal bot

2. Specify Formatting Requirements for Content Inputs

For parameters that accept blob/rich content, explicitly state the expected format:

  • "HTML-formatted content"
  • "Markdown-formatted text"
  • "Plain text only"

3. Use Consistent Parameter Names Within a Provider

For any given provider, use the exact same parameter name across all actions that reference the same concept. For example, if one action uses projectId, all other actions for that provider should also use projectId (not project_id or projectID). This enables our frontend to dedupe parameters when setting recommend-preset params.

4. Indicate When Parameters Must Be User-Provided

If a parameter value should come from the user rather than being inferred (e.g., sheet name in Google Sheets, channel name in Slack), say so explicitly in the description. Otherwise the LLM may hallucinate default values like Sheet1.

Usage

Invoking an action:

import { runAction } from "@credal/actions";

const result = await runAction(
  "listConversations",
  "slack",
  { authToken: "xoxb-..." },
  {}
);

Running a basic test for runAction

npm run test tests/math/testRunMathAction.ts

Secret Scanning (TruffleHog)

We run TruffleHog on every pull request that actually changes at least one file.

  • Empty / metadata-only PRs are automatically skipped to avoid noisy false alarms.
  • Any real change is scanned if a secret-like credential is detected the job fails fast (so we can fix it before merging).

The workflow lives at .github/workflows/trufflehog.yml and is intentionally minimal: skip empty PRs, scan everything else and fail on hits.