diff --git a/debug/debug-tests.ts b/debug/debug-tests.ts
new file mode 100644
index 0000000000..63a0a3ac4e
--- /dev/null
+++ b/debug/debug-tests.ts
@@ -0,0 +1,20 @@
+///
+///
+
+import debug = require("debug");
+
+debug.disable();
+debug.enable("DefinitelyTyped:*");
+
+var log: debug.Debugger = debug("DefinitelyTyped:log");
+
+log("Just text");
+log("Formatted test (%d arg)", 1);
+log("Formatted %s (%d args)", "test", 2);
+
+log("Enabled?: %s", debug.enabled("DefinitelyTyped:log"));
+log("Namespace: %s", log.namespace);
+
+var error: debug.Debugger = debug("DefinitelyTyped:error");
+error.log = console.error.bind(console);
+error("This should be printed to stderr");
diff --git a/debug/debug.d.ts b/debug/debug.d.ts
new file mode 100644
index 0000000000..1a71725a86
--- /dev/null
+++ b/debug/debug.d.ts
@@ -0,0 +1,30 @@
+// Type definitions for debug
+// Project: https://github.com/visionmedia/debug
+// Definitions by: Seon-Wook Park
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module "debug" {
+
+ function d(namespace: string): d.Debugger;
+
+ module d {
+ export var log: Function;
+
+ function enable(namespaces: string): void;
+ function disable(): void;
+
+ function enabled(namespace: string): boolean;
+
+ export interface Debugger {
+ (formatter: any, ...args: any[]): void;
+
+ enabled: boolean;
+ log: Function;
+ namespace: string;
+ }
+ }
+
+ export = d;
+
+}
+