Claude Code Plugins

Community-maintained marketplace

Feedback

data-operations-skill

@Osama-Raza/todo-cli-phase-1
0
0

Generic CRUD operations for in-memory storage using a list of dictionaries with auto-generated IDs.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name data-operations-skill
description Generic CRUD operations for in-memory storage using a list of dictionaries with auto-generated IDs.
functions [object Object], [object Object], [object Object], [object Object], [object Object], [object Object]

Data Operations Skill

Purpose

Provides generic CRUD (Create, Read, Update, Delete) operations for in-memory storage using a list of dictionaries.

Storage Structure

Storage is maintained as a list of dictionaries, where each dictionary represents an item and includes an id field.

Example Storage:

[
    {"id": 1, "name": "Item 1", "value": 100},
    {"id": 2, "name": "Item 2", "value": 200}
]

Methods

1. create(item: dict) -> int

Adds a new item to storage with an auto-generated ID.

Parameters:

  • item (dict): The item dictionary to add. Should not include an id field (it will be auto-generated).

Returns:

  • int: The auto-generated ID of the newly created item.

Behavior:

  • Generates a unique ID using _generate_id()
  • Adds the id field to the item
  • Appends the item to the storage list
  • Returns the new ID

Example:

new_id = create({"name": "New Item", "value": 300})
# Returns: 3

2. read(id: int) -> dict | None

Retrieves an item from storage by its ID.

Parameters:

  • id (int): The ID of the item to retrieve.

Returns:

  • dict: The item dictionary if found.
  • None: If no item with the given ID exists.

Example:

item = read(1)
# Returns: {"id": 1, "name": "Item 1", "value": 100}

3. update(id: int, data: dict) -> bool

Updates fields of an existing item in storage.

Parameters:

  • id (int): The ID of the item to update.
  • data (dict): A dictionary containing the fields to update. The id field cannot be updated.

Returns:

  • True: If the item was found and updated successfully.
  • False: If no item with the given ID exists.

Behavior:

  • Finds the item by ID
  • Updates only the fields provided in data
  • Preserves existing fields not included in data
  • Does not allow modifying the id field

Example:

success = update(1, {"value": 150})
# Returns: True

4. delete(id: int) -> bool

Removes an item from storage by its ID.

Parameters:

  • id (int): The ID of the item to delete.

Returns:

  • True: If the item was found and deleted successfully.
  • False: If no item with the given ID exists.

Example:

success = delete(1)
# Returns: True

5. list_all() -> list[dict]

Returns all items in storage, sorted by their ID.

Parameters:

  • None

Returns:

  • list[dict]: A list of all items in storage, sorted in ascending order by ID.

Example:

items = list_all()
# Returns: [{"id": 1, ...}, {"id": 2, ...}]

6. _generate_id() -> int

Generates the next auto-incremented unique ID.

Parameters:

  • None

Returns:

  • int: The next available unique ID.

Behavior:

  • Maintains an internal counter
  • Increments the counter after each generation
  • IDs start at 1 and increment by 1

Example:

next_id = _generate_id()
# Returns: 4 (if 3 items exist)

Thread-Safety Considerations

Warning: This implementation is NOT thread-safe by default.

For multi-threaded environments, add thread synchronization:

from threading import Lock

class ThreadSafeDataOperations:
    def __init__(self):
        self._storage: list[dict] = []
        self._id_counter: int = 0
        self._lock = Lock()

    def create(self, item: dict) -> int:
        with self._lock:
            self._id_counter += 1
            new_id = self._id_counter
            item["id"] = new_id
            self._storage.append(item)
            return new_id

    def read(self, id: int) -> dict | None:
        with self._lock:
            for item in self._storage:
                if item["id"] == id:
                    return item.copy()
            return None

    def update(self, id: int, data: dict) -> bool:
        with self._lock:
            for item in self._storage:
                if item["id"] == id:
                    item.update(data)
                    return True
            return False

    def delete(self, id: int) -> bool:
        with self._lock:
            for i, item in enumerate(self._storage):
                if item["id"] == id:
                    del self._storage[i]
                    return True
            return False

    def list_all(self) -> list[dict]:
        with self._lock:
            return [item.copy() for item in self._storage]

Usage Example

# Create items
id1 = create({"name": "Task 1", "status": "pending"})
id2 = create({"name": "Task 2", "status": "completed"})

# Read item
task = read(id1)

# Update item
update(id1, {"status": "in_progress"})

# List all
all_tasks = list_all()

# Delete item
delete(id2)

Implementation Notes

  • All methods include proper type hints
  • All methods have docstrings documenting parameters, returns, and behavior
  • The id field is reserved and auto-generated
  • Items are returned as direct references (use .copy() for isolation)
  • For production use, implement thread-safety as shown above